The iPhone is an extraordinary mobile device and the ringtones sound brilliantly on it especially when its speakers are not making additional disturbing sounds.
But Apple, with its unique style, wishes to make money out of everything so for using your favorite song as a ringtone you'll have to pay 0.99$ for every ringtone and you are only limited to the songs downloaded from iTunes Music Store, leading to a 2$ price per ringtone.
Now, with the launch of the new 1.1.2 firmware and iTunes 7.5 it becomes easy and affordable to create your own ringtones. First of all an audio files editor is required to modify the desired mp3 files because the iPhone doesn't accept ringtones longer than 40 seconds. After adjusting the wanted part you'll have to save the file as an mp3. If you wish, you can use fade in and fade out effects to make it sound better. Now just drag&drop the mp3 in iTunes and convert it in to AAC. With a right click, you'll have to select the "Show in Explorer" option. Change the file's extension from m4a to m4r and double click for opening it in iTunes. Connect the phone and make sure that the ringtone synchronization option is checked. Now all you have to do is selecting the new ringtone from the phone's settings.
For Mac users there's an interesting application called MakeiPhoneRingtone that is very user friendly and much more easy to use then the previous method.