According to some posts on tuaw.com (here and here), it's now (once again) easy to add your own 30 to 40 second (maximum) ringtones to the iPhone.
Just trim down a song or sound (using iTunes, GarageBand, Audacity, etc.), save an AAC-encoded version, change the .m4a suffix to .m4r, and drag the file into the Ringtones folder of the iTunes library (you may have to delete the original .m4a file from the library if it's already in iTunes).
Y
ou can add songs longer than 40 or so seconds to the iTunes ringtone section of the library, but they won't sync to the iPhone or show up in ringtones tab of the iPhone sync page in iTunes.
Mac OS X Hints
http://hints.macworld.com/article.php?story=20071116100217615