Validation is non-trivial for many fields. For example almost no-one implements email validation correctly as per the RFC because it's hard to get right, and most people just use a hacky regex that ends up accepting invalid emails and rejecting valid ones.
Or with credit card validation, many places don't validate credit card numbers (i.e doing the validation checksum, checking if the card is a mastercard that it's got the mastercard prefix) before sending them to the card processor site. If the card processing services rejects the card and the user has to re-enter the card details, chance are they won't bother and you've lost yourself a sale. If you validated for obvious mistakes on-the-fly (i.e user sees error immediately) you wouldn't lose as many of those customers.
You could also do things like supplementing the user supplied data, say the user supplies an address you could automatically geocode it and put it in a hidden field for the website.