I have been using SpamFilter.cfc to prevent form spam for nine months now with great success (and no user impact). Other than some new spam definitions (including one in this build), I haven't made any changes in a while - no bugs or problems to be fixed.
Here is some example code using SpamFilter.cfc:
<cfset SpamFilter = CreateObject("component","SpamFilter").init(DataMgr)>
<!--- Handle spam --->
<!--- Handle form submission --->
More information can be found in my initial blog entry on SpamFilter.cfc.
Also note that you can set the "getNewDefs" argument (second argument, ordinally) of the init() method to "true" and SpamFilter will check my site for new spam definitions when you initialize it.
I don't currently have a mechanism for reporting new types of spam to get added to the definition list, but I am open to suggestions.
SpamFilter.cfc also has methods available to allow you to create an administrative area to manage those settings.
SpamFilter.cfc does need a database and does require my free DataMgr component set in order to work (What is DataMgr?). All of the tables created by SpamFilter.cfc have a "spam" prefix, which should make it safe to use with an existing datasource.
SpamFilter.cfc is open source and free for any use. Feel free to give it a try.