IBM Developerworks has a good article about error checking and how programmers and designers need to be careful to ensure that the checks they make are checking for not only probable answers or situations but also possible. Imagine a web form asking for the name of the President of the US when you were born. The form asks for the middle name, but denies input when you enter "S" as President Truman's middle name.
There is comment that the author gives companies their own customer comment line when they ask for a phone number. I've been known to use the same technique for email addresses.
Error checking in general is an interesting area. I was party to a conversation not long ago about some reports my team produced. The comment was made that there was no way to error-check the reports. There are many ways including writing a second report to aim to produce the same results in a different way, or the opposite results. There are nearly always cost and time effective ways to double check reports.