I got most of this from brianlamar at everythingiphone.com forums and messed with it till I got it to work with Windows.

For Windows XP

This worked for me using iTunes 7.4.028 and iPhone 1.0.2 and a file extension changing program

1. open mp3 ringtone to iTunes
2. convert to AAC under "Advanced"
3. Right click new AAC file in playlist and click "get info." Memorize file location.
4. Now delete the mp3 ringtone and AAC file from iTunes Playlist but choose to "keep files"
5. goto itunes folder where AAC(m4a) ringtone is. Change from m4a to m4r by right clicking
6. Double click this m4r file (this will add it to iTunes ringtones)
7. goto iTunes Ringtones folder and change from m4r to m4a by right clicking
8. in iTunes play the ringtone file, it will give you an error that it can't find the file and it will ask if you want to find it. Hit yes and locate the file you just changed the exntension on in step 8. iTunes should automatically open this folder.
9. sync iPhone, enjoy your new ringtone

I've done several so far it works like a charm!