А ваша форма как отправляется?
Важно настроить строгую проверку, чтобы гарантировать что данные на сервер приходят именно с этой формы.
Далее, можно в JS поставить проверку
Event.isTrusted
Разного рода капчи. В этом смысле хорош reCaptcha -- она может заставить пользователя пройти проверку 3-4 раза, даже если он всё правильно вводит.
Полностью защитится от ручного спама на клиенте скорее всего никак. Но можно его значительно усложнить. Злые капчи, стоп слова и прочее. Достаточно добиться чтобы спамить вас стало не выгодно (по затратам времени/денег).