This is actually a little complicated. It took me a good deal of digging and experimenting to find all this out, so I'll save you the trouble. First, you are going to need a U3 flashdrive. These are actually physically different from normal ones in that they tell windows that they are actually a CD drive, which allows them to autorun. This cannot be reproduced in any practical way with a non-U3 drive, sorry.
Secondly, this will not work on windows vista, or on XP machines which have autorun disabled. Fortunately, neither of these is the case for the majority of business or home computers.
Once you have your U3 drive, you are going to need to override the disk image using a free program called U3 Universal Customizer (google it). You need to create an autorun.inf file which points to your delivery executable (google if you don't already know about it).
Now for the keylogger itself, I don't personally know of any very stealthy, free ones, but you are almost certainly better off making your own anyway, since that way it won't be picked up by an antivirus/keylogger library. This is very easy in any windows specific language, such as visual bascic.
If you do do this, I would recommend using the getAsyncKeyState method. I made one one time that used this method, and tried various anti-keylogger limited time trial versions of expensive programs which claimed to detect/block loggers by the way they worked, but not one of them affected it.
tl;dr : you need a U3 drive and you should make your own logger.