Конечно, защититься можно только от ботов (не от людей). И самая надёжная защита - на стороне клиента. Она же самая простая: генерировать один из элементов формы с помощью Javascript - DOM. Как раз недавно написал об этом статью (http://ir2.ru/dhtml4spam.aspx). После применения описанной системы на доске объявлений и в блогах - ни одного робота. Роботы продолжают молотить по формам добавления текстов "вслепую", они ведь не умеют (пока что) интерпретировать Javascript; можно собирать по ним статистику и легко отсеивать (либо вообще игнорировать "клиентов", не видящих динамического поля в форме).
Можно ещё один прикол попробовать - http-авторизацию. Ни разу не видел ни одного робота на своих сайтах с http-авторизацией... Хотя это всё равно проще для роботов, чем DHTML.



