I've had my share of difficult clients, but always focused on the golden rule: 20% of your clients bring you 80% of your profits.
The example you have given me sounds like you have a client that is not worth keeping. However, a good contract can often resolve these issues.
Discuss with your client beforehand whether he or she wants to be involved in the creative process or not, and explain that designing without consultation can be very expensive (I personally wouldn't accept a client that would want us to design without any indication of what they like in terms of design). Also discuss different SEO packages that clearly detail that keywords will be given a difficulty score, and that cost will be according to difficulty.
That way, each time the client is difficult, you make serious money, and that does sweeten the pill. And the client cannot get annoyed, because the contract and the upfront negotiations clearly discussed the cost attached to his or her style of working. He can either change his style of working, or accept the cost. If the client remains annoyed despite the solutions you offer or the fact that you do work within the scope of a contract, then propose to the client that he or she can get out of the contract providing the bills are settled. You don't want to work with someone who is annoyed with you, that could get bad for word of mouth.
One last thing: when working with a client, make things as simple as possible for your client. The creative discovery process that we employ is simply one where a client discusses with us the websites they like and what it is they like about them. That then gives us an insight in the type of design they want. We create 3 mock-ups that are paid for. If ever a client wouldn't like one of the mocked up designs (which they can request changes to) and decides not to proceed with us, we would simply let them go.