MakeiPhoneRingtone is a free utility that can convert unprotected AAC files into ringtones for your iPhone. Since the iPhone limits ringtones to 40 seconds or less, however, you will need to first use a separate audio-editing application to shorten most songs to the acceptable length--and, if necessary, use that app or iTunes to convert the song to an AAC file. (If you try to convert a longer file, an error dialog will recommend Fission, from the developers of MakeiPhoneRingtone, but any similar app will work.)
Once you have a file of the appropriate length and format, this utility is extremely simple. Just drag the file onto MakeiPhoneRingtone, and the ringtone will appear in your iTunes under Ringtones, which will then appear on your iPhone after your next sync. This latest version fixes an issue with MakeiPhoneRingtone's Help menu.