1. Make sure your iTunes preferences are set to "Keep iTunes music folder organized" and "Copy files to iTunes music folder when adding to library" under the Advanced Preferences tab.
2. Make sure your iTunes import format is set to AAC (you may have this set to MP3). Set this under the Importing section of the iTunes Advanced Preferences tab.
3. Find a song in your collection that you'd like to make a ringtone from. This can be music that you ripped from your own CDs, bought from the iTunes Music Store, downloaded from the internet, or any other music that has made its way into your iTunes library.
4. Ctrl-click on the song title in iTunes and select Get Info, then select the Options tab.
5. Now we're going to make the snippet. If you want the first 30 seconds of the song, click on the "Start Time" box and leave "0:00" as the value. Then click on the "Stop Time" box and put "0:30" there. You don't need to start at the beginning of the song, you can use whatever values you want here to pick the timing of the snippet that you want (just make sure and keep the total time of the snippet to no more than 30 seconds).
6. Click OK to close the Get Info dialog box and Ctrl-click on the song again in iTunes and this time select "Convert Selection to AAC". Once you do that you should get a second version of the song in your iTunes library that is just the 30 second snippet. It's a good idea to rename this file at this time to something that will make it easy to find in your iTunes library, I find it helpful to append the word "ringtone" onto the end of the song name. Now remove the snippet from your iTunes library (so we can re-import it as a ringtone) by Ctrl-clicking on it and selecting Delete, but making sure to choose Keep File and not Move to Trash in the following dialog box.
7. Now quit iTunes and go to the Finder and locate the file, which should be in Home>Music>iTunes>iTunes Music, and rename the .m4a extension to .m4r. (Alternately you could use Rogue Amobea's free MakeiPhoneRingtone at this point and just drag the file onto their helper app).
8. All we have to do now is import the newly named file into iTunes. Just double-click on the file or drag it into the iTunes Ringtones folder and launch iTunes and it should now show up in iTunes' Ringtone section. Plug in your iPhone, let it sync and your new Ringtone will be added to the choices on your iPhone.
Once you're done making ringtones remember to go back and change your Import preference if you normally import your music as MP3s, and you'll also want to go back and change the original songs you used in your iTunes library back to their full length by unchecking that Stop box in the Options section of it's Advanced Preferences.
It sounds like a lot of steps, but it really goes pretty quickly once you get the hang of it. It's fun to pick different sections of songs to use by setting the Start time appropriately. Whether you like the free DIY method or prefer to use one of the available helper applications, it's now easy to get custom ringtones on your iPhone.