I use Verizon for my phone service, and while they have a large coverage area, they also tend to cripple the functionality of their phones out of greed. They'd rather charge you fees for using simple features like transferring pictures or ringtones to and from your phone. Other cell phone companies do the same thing, but I've found a way to get around it. The following method applies to Motorola phones.
Before you start, you need a way to connect your phone to your computer. Your phone probably has a mini USB port, so the easiest thing is to use a mini USB to regular USB cable to connect it via USB. Your phone might also have bluetooth so you could use your bluetooth enabled PC (if you have one) to connect it wirelessly.
Install the "Handset USB driver", then connect your phone to your computer. Windows should recognize it and install it for you. Then look in your Device Manager under Modems and it should be listed there. If not, unplug and replug your phone in. Right click on the Motorola modem and click Properties. Under the Modem tab, find what COM port the modem is in (mine was COM4).
Open "P2kCommander.exe" and go to Options and select "Use this COM port" and type in "COM#" with your COM port number. In the bottom left window, you want the message to appear "USB p2k device found, phone connected!" The messages "GENERIC FAILURE" and "Volume name fail!" are normal.
In the right window, in the pull-down menu, select "/a P2k Phone System" and wait a moment while it loads the files from your phone. Explore the folders and find where your various things are stored. Exploring mine, I found everything under "a/brew/mod/" like my custom photos, the stock wallpapers, my custom sound-recordings, and ringtones. You can copy files over by selecting them on either side and clicking copy at the bottom. Watch the green progress bar, especially if you're transferring a large file, and make sure it finishes without errors. After it finishes, check the copied file size and make sure it is the same as the original.
You can also delete existing files you don't want. To be safe, I copied over files from my phone to my computer before I deleted them from my phone, just in case. I deleted all the stock images and transferred custom images over to use as wallpaper, etc. Make sure you are using the same resolution ratio as the original photos or your phone might give you an error when trying to open it.
I deleted all the existing ringtones and transferred custom ones over. To make ringtones work, you need to delete the database files that your phone made itemizing the ringtones in your phone, then restart your phone to have the database files re-created. In my phone, these were located under "a/TmpTneDB.db" and "a/MyToneDB.db". Hopefully that's where yours are too. ^__^ After deleting these two files, restart your phone and the ringtones should be there and working.
How do I make custom ringtones?
Any mp3, wav or midi file can be used as a ringtone. If you'd like to edit an mp3 or wav file a little, I highly recommend Audacity, which is a free, open source audio editing software. It is full-featured audio editing software that I use for a lot more than just making ringtones.
Install Audacity, and then open the mp3 you want to use as a ringtone. Select the portion that you want to use. It can be the whole song, or a portion of it. As a ringtone, it will be looping, so you might take that into consideration. Copy it with CTRL+C, then open a new file with CTRL+N, then paste the portion with CTRL+V. To fade in or out, select the portion to fade and go to Effects > Fade In/Out. When finished, go to File, Export. Choose mp3 for the format, and then click Options. Here you can change the quality to lower the file size if desired. I saved my ringtones at 128kbps.