A 'trick' that I have found very effective at detecting spambots filling in forms without having to put the user to the pain of completing a Captcha is to add a field to the form and then set it display: none in the CSS. Spambots will find the field and complete it. Human users don't see the field so must leave it empty. The form handler can take a look to see if there is anything in the field and dump the submission if there is. I call my field "firstName" to give the spambots a bit of a hint in case they are parsing the field names in any way.
I've been running this code on one of my sites for over a year now. I monitored the outcomes for six months and had no false positives or negatives so I now just dump the submission and present the normal 'Thank You' page so that I'm not giving any othe rinformation away.
Hope that helps.