Okay, the first thing you need to do to be able to trick your iPhone into playing custom ringtones that aren’t from iTunes (screw you, Steve Jobs), is to get the program iPhoneBrowser or the equivalent (iPhoneBrowser is for Windows, there are plenty for Macs, just look around). You do not need to “jailbreak” your phone, don’t worry. This will not void your warranty.
I think you can get iPhoneBrowser from here: http://code.google.com/p/iphonebrowser/downloads/list. Make sure you put it in the right directory, though, or it won’t work (needs to be in bin directory of the Apple Mobile Device folder, I believe, just read the instructions).
** IMPORTANT NOTE ** — There is a link from that page that will tell you how to keep your custom ringtones from disappearing. Unfortunately, to do it, I believe you have to have your iPhone “jailbroken” (wide open firmware-wise) which will void your warranty if you’re not extremely careful. Maybe will void your warranty, period, I don’t know if you can truly “unjailbreak” an iPhone. If you don’t want to jailbreak your phone, which I don’t, either, you just have to keep a copy of your modified Ringtone.plist file somewhere on your computer and copy it to your iPhone using iPhoneBrowser or the equivalent after every sync. It’s not as hard as it sounds, trust me — NONE of this is as hard as it sounds or seems. It’s really very, very easy.
Anyway, I hope this helps some people out. I think it’s crazy that Apple insists you buy off of iTunes in order to be able to convert a song or sound into a ringtone. Come on, Apple, get with the program, this is the kind of trick Microsoft pulls, not you.