Вместо CAPTCHA, которые будут раздражать пользователей, вы можете воспользоваться тем, что у большинства людей включен JavaScript, а у ботов - нет. Просто создайте небольшой фрагмент JavaScript, который при запуске вставляет определенное значение в скрытое поле.
Для тех, у кого отключен Javascript, вы можете показать CAPTCHA (используйте тег <noscript>
), и затем вы можете принять отправку, только если какая-либо из этих мер проверена.
Для максимального раздражения злодеев вы могли бы сделать разницу между сообщением об успешном завершении и сообщением об отказе в вычислительном отношении трудным для различения (скажем, все то же самое, за исключением одного изображения, отображающего сообщение), но простым для понимания человеком.