ORIGINAL 9/7/07: Thanks to TUAW for this. Here is how I was able to do it in OSX.
I first had a couple of .mp3's that were my ringtones I made for my old Razr. I played each of them so they would pull into iTunes. I then went into the Importing preferences of iTunes to make sure it was set for .AAC encoding. I then went to each of my mp3's in iTunes, right clicked, and said to convert to AAC (creates a .m4a). Once done I removed the mp3's from iTunes. I then went into the iTunes folder for the new AAC's and copied them out to my desktop. I then removed all 3 from my iTunes library via iTunes.
I then selected each .m4a on my desktop, right-clicked for Get Info and changed them to .m4r
I then imported each back into iTunes.
With my iPhone connected, checked under the ringtones tab and they were all there. I then sync'd and voila! They are on my iPhone as my ringtone.
No cost, no command line hacking, pretty simple.