Lots of discussions have already taken place regarding this subject.
The general concensus (and my opinion) is that field level validation should be avoided unless absolutely necessary.
All validation should be done on commit of an action (e.g. press save button).
==============
Example.
Two date field for range: fromDate and toDate.
If you enter a fromDate then a toDate. toDate could be validated to make sure that is not earlier than the fromDate. If you decide that the toDate should be an earlier date and the fromDate should also be earlier, you will get "stuck" in the toDate field until it is not earlier than the fromDate. The user will then have to change the fromDate and then the toDate again.
==============
Putting the validation on commit or save allows the user to freely move around the form until they're ready to save the record.
Hope this helps
Jon