I thought I'd share a way to add ringtones that are longer than 30 seconds (tested and working in 1.1.2).

- Convert the full song to AAC
- Rename extension from .m4a to .m4r
- Use WinSCP to SFTP to your iPhone
- Browse to /private/var/root/Media/iTunes_Control/Ringtones
- Upload your full ringtone to this directory
- Browse to /private/var/root/Media/iTunes_Control/iTunes
- Edit Ringones.plist

the following is an example of an edited Ringtones.plist file:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Ringtones</key>
    <dict>
        <key>ringtone1.m4r</key>
        <dict>
            <key>GUID</key><string>E34148EC23D5F493</string>
            <key>Name</key><string>Ringtone 1</string>
            <key>Total Time</key><integer>1</integer>
        </dict>
        <key>ringtone2.m4r</key>
        <dict>
            <key>GUID</key><string>F3ABD4D47AE36B36</string>
            <key>Name</key><string>Ringtone 2</string>
            <key>Total Time</key><integer>1</integer>
        </dict>
    </dict>
</dict>
</plist>
* ringtone1.m4r and ringtone2.m4r are the filenames of the .m4r files
* the GUID key is a unique 16 character (hex?) string (AFAIK, not of any importance)
* the Name key ("Ringtone 1" and "Ringtone 2" in the above example) is the name that appears in the custom ringtone list
* leave the Total Time key value as 1

And there you have it... a full length ringtone available for selection in Settings -> Sounds -> Ringtone

It is also recommended to disable ringtone syncing in iTunes, otherwise all custom ringtones will be removed upon syncing.

I do encourage anyone with more knowledge than I, to script this entire process.