Oh it's quiet a big deal when you're not set up for it from the beginning, and it costs you time and money to transfer your client to another developer.
When you handled everything for your client from domain registration to hosting to ftp and email accounts and some of the scripts require relative URLs (relative to your hosting account's directory on your hosting company's server) and their mysql databases are with you. Surprise! You've got a few hours to a few days of work ahead of you. Sure you can charge the client. But again, if you're sick of that shit you can't just ditch them. If the other developer wants to do it, they can't because there's no way you'd give them admin access to your server. And since you're on a shared hosting server you don't have the privileges to create a temporary admin account that only allows access to the things that need to be transferred. You're stuck doing all this work.
If you want to get rid of the client you now have to oversee that all these things are successfully transferred. And no one can do this but YOU. The more complex the client's site the more of a pain in the ass things become. Things add up quickly.
Oh, Just a few things you need to do. :)
- make backups of absolutely everything
- Transfer the domain (up to 7 days)
- Setup and reteach the client their ftp details
- transfer email accounts and if they have an IMAP account, have fun backing up all their emails and attachments and transferring them to the new IMAP acount. Same applies to an archiving POP3 email account.
- Go into all 3rd party scripts and reinstall everything
- change all relative paths on all of those 3rd party scripts as well as changing the mysql details (some scripts aren't simple "drag and drop then reinstall" scripts) they are instead a pain in the ass to migrate because certain options aren't stored in the mysql database that you just backed up. Instead they're in the filesystem and you have to back that up and drag and drop everything over, and if you re-install it you lose all those settings so you have to spend a whole day planning out what exactly needs to be dragged and dropped over.
- transfer all backups little by little to their new destination
- transfer over all the mysql databases
- RE-train your client to understand ALL of these new changes and answer any support emails when they have problems or something is wrong. (NO they won't send emails to the new developer, they'll send them to you)
- Answer emails from the new developer who doesn't understand exactly how everything was done.
And a lot of this requires everything at the other host to be somewhat setup, which requires a bit of cooperation between you and the new developer. And when it takes most people 5 days to respond to an email because they're overloaded with work (something I'm guilty of right now). A complete transfer after ironing out all the kinks could take over a month.
If you were smart and planned ahead you would have just created a whole self contained account with a host and had everything wrapped up together so when you transfer your client to a new developer you just hand the new developer the admin username and password to the control panel and leave. But you didn't. You're Chris Norstrom and you're new to this crap and so you did things the wrong and long way. ;)