I made a fix. There are still ways to get a duplicate caret (in the native component and a JTextField) but the last component clicked is the one to receive inputs.

Could you try this latest 1.0.2 preview (DJNativeSwing-SWT-1-0-2-20110904.zip) and report any issues you find? It would be great if you could confirm that no side effects were introduced, so if you can perform this test on other OS too (Mac/Linux) and eventually other Java versions, it would really help.

Note that all this focus handling would be much easier if SWT were to find a solution to that bug:
Feel free to vote to encourage them to work on it.