Seth Godin on quitting a freelance gig:

A powerful thing a freelancer can do for her career is to figure out when to fire the bad clients. Firing bad clients is an essential step on the way to finding better ones.

He ends with some great questions you need to ask yourself as you get ready to leave a client.

I don’t think he emphasizes enough how important it is to say no to clients and prospects. This is the hardest lesson I have to help freelancers learn. Just because the client is going to have a hard time finding your replacement doesn’t mean you have to keep doing the work.

That’s their problem, not your problem.