Captcha, reCapthca and the like have serious usability issues. And basically anything that requires a user to fill an extra field (other than the comment) each time the user posts a comment, is considered bad usability.
(NOTE: I hope you do realize that users need only enter their name and email address once when it comments on a website, unless he clears the cache.)
So, plugins like Better WordPress reCAPTCHA, WP-reCAPTCHA, Spam Free WordPress, etc. although are extremely good at what they do, are out of the question considering the aforementioned concerns.
Plugins like Bad Behavior, WP-Hashcash Extended (successor of WP-Hashcash), .htaccess rules for preventing recognized spamming techniques and bots, etc. aren't without false positives.
Sometimes, they are known to even block search engine crawlers coming from a new IP address range. Also, depending on JavaScript to basically authenticate comments isn't really a great way, IMO. Just saying.
As I see it, it all boils down to Akismet, Impostercide, and Cookies for Comments anti-spam plugin combo.
(AntiSpamBee, Defensio, and TypePad AntiSpam, among others, are aimed to be Akismet alternatives. While many don't like Akismet because it's from a company that believes in open source, but isn't free, many of us still acknowledge that it's next to none.)
So...
What else should I do? (rather, should I be doing something else that's more effective?)
Has anyone tried ZigTrap? How does it compare to others? (Too many false positives is a moderation/spam queue overhead.)
PS: I am sure that there's no "best for all" solution. But it will help if you can share what works best for you.
TLDR: How do I prevent spam on WordPress comments without requiring manual approval or user login/registration?