I've been looking for a way to keep my custom ringtone, regardless of the sd card I'm using and if it's accessible at the moment. So I figured out an easy way to do this and I thought I'd share it.
1. Convert your ringtone to ogg format (for example with fre:ac)
2. Copy the ogg file to your sd card
3. Download and install this app: Mount /system (rw / ro). Run it and click "Mount r/w".
4. Open a file explorer with root support (like Yaffs Explorer) and navigate to /system/media/audio/ringtones/
3 & 4 can be done with just Root Explorer/SU File Manager & Terminal (I think), but they're not free.
5. Pick a ringtone you want replaced - for example Cairo.ogg. Rename it to Cairo-old.ogg and then copy your custom ringtone to /system/media/audio/ringtones/ and rename it to Cairo.ogg
Now your custom ringtone will be available in the phone's sound settings under the replaced one's name.
This should also work with alarm sounds (/system/media/audio/alarms/) and notification sounds (/system/media/audio/notifications/).
I hope someone finds this useful!
EDIT: Looks like you can just put new AAC/MP3/OGG files in that folder and they will be visible after a reboot!