Clearing the entire form based on an invalid entry will certainly frustrate users. This being true of any form, for any purpose. Registering for a site, for example, and entering a username that is already taken should not clear out your other details -- you should simply point out that the username is taken.
I have dealt with both scenarios when entering credit card information: (1) the credit card information clears or (2) the credit card information stays. I will say that when the credit card information remained, it took me longer to fix the problem! This is because when the information is there, I find myself trying to figure out how the number is wrong.
On the other hand, if the credit card information is cleared, I quickly re-enter the number (being a little more careful) and re-submit. Bam. Done.
This is an empirical observation of myself. While others may differ, I would not by shy in claiming that if you present data to a user and tell them something is wrong with it they will try to figure out what is wrong, instead of just fixing it.
My suggestion would be to clear the credit card number field and display a message that it was incorrect. You may also wish to clear the expiration date and security code, as you may not know which of those 3 is actually wrong (depending on how your verification system replies). I would leave all other information intact.
But what if the billing address is wrong? In dealing with online orders I seem to recall that I've always been called out directly for an invalid address vs. an invalid card number. So I'll make the assumption that the verification system tells you the difference.
In this case I would leave the address and tell them it is wrong. I just contradicted myself, but an address is complex enough that it might actually take longer to re-type it then to find your error. An address (especially your own) is easily parsed and an error could be found quickly. Again, I speak only from empirical observation of my own experience.