We have a client that wanted to be able to process donations when the Credit Card's CVV numbers were not available. I had thought this field was mandatory, and indeed, CiviCRM's AuthorizeNet payment processor package requires it. But after talking with AuthorizeNet (the company) we discovered that the field is optional.
This is a useful trick that fellow CivicActions team member and CiviCRM wizard Matt Chapman showed me. Basically, the hook_civicrm_validate() function can be used to reset an error caused by a missing field. Here's the entirety of the civicrm_cvv module: