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]