Luckily for us Apple buried a way to create Ringtones in iTunes itself but only with songs that you've purchased through their store in the .m4a extension. Here's how to do it using the latest version of iTunes 9.
- Open iTunes
- Go to the Edit menu > Click Preferences > Click the Import Settings on the first "General" page
- Make sure the Import Using field is set to AAC encoder
- Click OK to save your settings; then close both Windows
- Go to your Music Library and find the song that you want to convert into a ringtone
- Right click on the song > Click Get Info > Click the Options tab
- Check the Start and Stop Times checkboxes and then change the times so you have a ringtone no longer than 30 seconds (the max allowed for iPhone Ringtones). You may want to play the song several times to figure out the exact spot of the song you want to hear.
- Click OK to save your settings
- With the song still selected go to the Advanced menu > Click Create AAC Version. A shorter version of your song has now been created and placed in your Music Library.
- Right click on the new song > Click Show in Explorer > Find the new song version and change the .m4a extension to .m4r
- Double click the renamed song and iTunes should automatically place it in the Ringtones library. When you re-sync your iPhone the ringtone will be there.
Note: I originally saw this hack in the iPhone Hacks book; however the steps detailed in the book are a bit outdated since it was published in 2009.