From ModMyiFone - Wiki
This is a very easy way to create a custom ringtone for your iPhone, without any other tools than iTunes!
What you need:
1. iTunes
2. iPhone (doesn't matter which Firmware Version you have.)
Step 1.
First you chooce a Song you wanna have as ringtone:

Step 2.
Then you left-click it, and choose from the context-menu "Information":

(BTW: Sorry, I'm from Switzerland, so my Computer's Language is set to German!)
Step 3.
Then you go to "Options" and click onto "Start at" (you don't have to start from 0:00 if you don't want to, but your Ringtone can't be longer than 30 Seconds!!)

Set from when to when you wanna have your Ringtone. Once you've done this, just hit Ok.
Step 4.
Left-click the title again this time choose "Convert selection to AAC":

Wait 'till it's done converting:

Step 5.
After this, you should have to files, one a full lenght and one cut to 30 Seconds:

Then you left-click the 30 Second Track and hit "Show in Finder", the file which apears in Finder should be called "xxx.m4a, and this "a", you gonna change into a "r":

This Message will apear, you just hit "Use m4r"!:

Go to iTunes and hit "apple keyy + delete key" A message will apear, and ask you if you wanna delete this track! Hit "Ok" (or "Yes", anyways, just accept it!) and then another message will apear and say "Keep Files" or something like that. You must keep the file, otherwise it will not work!
Once you've done this, double click this "xxx.m4r" file and it will open in the Ringtone Section in iTunes!!!:

Now you can just drag&drop it to your iPhone and use it as Ringtone:

Congratulations! You have now discovered the easiest way to make custom Ringtones for your iPhone!