In plain sight.
These are some thoughts.
- use display:none.
- Color the fields the same (or very similar to) the background color.
- Don't do that, You'd be surprised how many times you would get a valid form with something on that field, by mistake probably, but still there.
- Use positioning to move a field off of the visible area of the page.
- Most probably one of the best, the user is not going to see it, so it can interact.
- Make an element too small to show the contained honeypot field.
- This one sounds good, but there is an accesibility problem. I'll explain below.
- Leave the fields visible, but use positioning to cover them with an obscuring element.
- Not good idea, the visualization may change, or move, or be affected by something that you didn't consider and then the user will see something that is not sure what is for.
- Leave the honeypots displayed but tell people not to enter anything into them.
- This is the best option. Clear from any perspective, and really accessible.
The problem with the solutions that involve modifying the position or representation, is that they are not accessible, so user with assistive technologies still will have to deal with them, but they will have no information and no idea what to do with that, not to mention the possible "accidents" where some information may end up there just by accident.
Considering one of the comments about filling the fields and leaving that one empty, it's true, every system has it's flaws. But I think this flaw is a bit "better" than other flaws. Plus you can combine your method alternating the empty field with none, and a different human question like 2 + 2. That way, you would have at least 3 models of form, all accessible but unpredictable for an automated script. Still some flaws can arise, but so far, seems like a good option.