Spammers will find a way around any lexical filtering you do, or it will have false positives and annoy your users. Your best bet is:
- rate-limit the rate at which submissions or attempts can be made (from a particular IP address if you like)
- Make a usable interface which allows the admin to efficiently bulk delete spam
- Don't publish unapproved records
These won't stop spam, but they will make it easier to delete.
A CAPTCHA is another solution, but it is excessively annoying to your users - avoid it unless you are Google Mail.
Some structural changes to the form submission page may make things harder for the lame-bots (it won't stop all of them, but it might stop some extremely lame ones) - such as placing hidden fields whose values are checked, or things to try to confuse a lamebot's HTML parser such as commented-out hidden fields.
Mark