You are going to need basically two things.
#1) Garageband version 4.1.1 (available via Software Update)
#2) an mp3.
(yes, that's it)
Okay, so, Garageband (GB) 4.1.1 allows you to make your own songs and turn them into Ringtones on your iPhone. Nice feature huh?
UPDATE: You don't need Magic GB at all, just drag your iTunes media into the Garageband screen, set your loop, and export it as a Ringtone! Thanks Apple.
So, go open Garageband. Select Magic garageband from the spash open screen, you can select any genre you want, then click the audition button. This will make up a track to a song by selecting instruments and what not, but that's not what we are here for is it? okay.
After you have it open, click the button on the right of GB that says "Create Project" (down at the bottom).
GB will take your magic GB tune that you just "made" and turn it into a looped song with 5 tracks (by default)
Now, down at the bottom right (THE VERY BOTTOM RIGHT BUTTON) in GB, it's your media button. After clicking this, you will get a drawer that will allow you to import music or videos or what not. This drawer will show all the music you have imported into iTunes. Take whatever song you want and drag it into the main loop screen.
So then you will see your 5 loops from Magic GB and your mp3 track. Now, make sure that your mp3 track is highlighted. (It should be by default, it'll be blue) Tap the "s" key.
This will mute all other tracks in your Project EXCEPT for your mp3.
Now, click your loop button, (at the bottom, it looks like two arrows going in a circle) When you click it, you will see a yellow colored bar appear at the top of your GB project. This is the length of your loop. Move this loop and resize it to wherever in the song you want your ringtone to be. Very simple, just drag the yellow bar to the right or left, then resize it with the ends.
Now from your GB menu at the top of the screen click "Share", then click "Send Ringtone to iTunes". It will immediately export your looped portion (with the other loops still silenced) to iTunes and play it. You can then sync it with your iPhone for free.
No hacks. All you'll have to do is rename it once it gets to iTunes, because it will be named "Magic Garageband Song" or something.
Select your Ringtone on your iPhone after you sync. Done.