Options that require Jailbreak
• SSH/File Transfer: All you have to do is drop an iPhone's iPod-compatible ringtone into the /Library/Ringtones directory, meaning you can use MP3s, AACs (protected and unprotected), or M4As. Anything that your iPhone's iPod supports will work.
• iBrickr (Windows): iBrickr actually transcodes your sound files for you, so if you're looking up old WAV sound pages from 1999, iBrickr can convert them into something that the iPhone understands before syncing. [iBrickr]
• iFuntastic (Mac): Same as the SSH/File Transfer option. Just drag them into the correct /Library/Ringtones folder. [iFuntastic]
• Sendsong: Allows you to pick any song from your iPod and move it into the Ringtones section. Install this with AppTapp.
Options that don't require Jailbreak
• iTunes Music Store: You can manually place AAC files into the correct iTunes Ringtones folder as long as it has the right file extension. Works with purchased iTunes songs or songs you've converted to AAC format. [JoeMaller]
• Rogue Ameoba's MakeiPhoneRingtone (Mac): This takes advantage of the iTunes 7.4 and iTunes 7.4.1 ringtone file compatibility workaround to get the Ringtones show up in iTunes. All you have to do is drop in an AAC file, which can be one of your songs purchased from iTunes. [MakeiPhoneRingtone]
• iToner (Mac): Copies ringtones to your iPhone, bypassing iTunes, should be guaranteed to work with future iPhone updates. Costs $15. [iToner]
• iPhoneRingToneMaker (Windows): Transfers ringtones to your iPhone, but lets you edit them beforehand in its editor so you can chop down long songs to a manageable clip. [efksoft]
OK, here's the step by step for first time ringtoners.
1. create a 30 second AAC 128 bit file somewhere on your hard drive (GarageBand works great for doing this).
2. Change the extension from m4a to m4r. (Windows users-From File Explorer, go to Tools/Folder Options/View tab and uncheck "Hide extensions...")
3. Double-click the file to register it with iTunes and create the ringtones folder.
4. Browse to the ringtones folder (located in your iTunes music folder) and change the extension back to m4a.
5. Plug in your iPhone and go to the Ringtones tab where you should now see the ringtone.
7. Assign the ringtone on your iPhone.