I'd buy him a new cover AND a basket of goodies with a sincere apology. If you do that he may ask you to do the new cover and you will recoup a little back. $300 , to me, isn't worth the bad publicity you will endure since it was admittedly your fault. Own up to it and treat the customer how you would want to be treated and buy him a new cover. Expensive lesson learned but turn him into a good advertisement. Give him a few discount fliers or something in the basket to earn his business back. If you treat him well, hopefully he will be gracious enough to give good feedback to his boater friends etc. If you have already upset him, chances are slim that he will. But do the right thing and replace his boat cover.
I agree with
@GN's post 1000% percent!
Instead of trying to figure out the least you can do to make this go away, I'd use this as a learning experience and figure out the MOST you can do to turn this situation around.
You admitted you made some mistakes (taking the order on a used cover in "okay" shape, printing the wrong color, covering up your mistake, leaving behind marks, etc)
It doesn't sound like the guy is trying to take advantage.
Instead of spending $500 on a yellow page ad, spend that earning some great word of mouth by wowing this customer, who by all accounts should be seriously angry with your business, and making them a fan of your work and customer service ethic.
Customers know that no company is perfect and that mistakes will be made. We're all human. What customers TRULY care about is how a company (re)acts when a problem comes up. Do they tackle the problem head on, listen, and make it right or do they try to sweep it under the rug, avoid the issue, and put the blame back on the customer?
Read number 3 here:
Seven steps to remarkable customer service - Joel on Software
When customers have a problem and you fix it, they’re actually going to be even more satisfied than if they never had a problem in the first place.