Although this is the best way to avoid spam, I cannot recommend it unless you don't care about lost customers.
The worst part about blocking legitimate sign-ups is you may be making it impossible to even hear their problems.
>Simple inspection of the DOM and CSS ought to be enough to determine whether the field is visible and nearby the other fields.
Creating a set of heuristic to detect an invisible (to the user) form would be difficult.
If you actually rtfm, you'd realize that the purpose of the honeypot textfields is to create them so that they look like they are visible, to bots, but when rendered on a page they would be invisible to a human (for example: textfield may be under another element, positioned off the viewport, or background set to match the page background). Building a bot to detect all those would be incredibly difficulty. To start, the bot itself would have to actually parse the CSS/HTML/JS and render the page, and then run heuristics to figure out which fields should be ignored.
My intention was to pose a challenge to prove that honeypot fields do work, and to distinguish between good and bad implementations (e.g., {display: none}).