Yes, the second method Pullo mentions is better, because it doesn't punish your legitimate users. It's often called the "honeypot" method, and there are lots of threads here on that subject, as well as elsewhere. Forget CAPTCHA: it's garbage.
Ultimately, the only way to make a form spam proof is to make it impossible to fill out. Otherwise, you will still get idiots inserting spam manually into your form, even if the bots are thwarted.