Step 1: Connect your iPhone 4 to your pc, and launch iTunes
Step 2: Find the song you want to use.
Step 3: If its longer then 30 seconds Right click the song (in iTunes) and select "Get Info" then click on Options and set it to end at 30 seconds. Click OK
Step 4: Right click the file again and click "create AAC Version".
Step 5: Right click the new file it created and click on "show in windows explorer". You will see it and should end in .m4a This needs to be changed to m4r. To do this simply right click and click rename, then change the a to r
NOTE: You will need to have your windows set to show the file extensions
Step 6: In iTunes under your device you should see a folder called "Ringtones" (If not go to edit and preferences then make sure there is a check in "Ringtones", if there is, remove it, hit ok, then go back in and put the check back"
Step 7: Click on the Ringtones under your device and you can simple drag and drop the .m4r file into this folder.
Now you can select this as your ringtone on your iPhone
THE ONLY PROBLEM: Doing it this way only allows you to have 1 ringtone at a time. In the pic below you can see i have 2 ringtones, but only the newest one you drop in shows up, i dont know why.
Hope this helps.