The customer is not always right. I explain to them that THEY hired ME, as an expert in the design field, to create for them a website(or other design related media) that would properly display their product, service, etc. And that they should trust the expert to do their job. Should they disagree with my point of view, I fire the client.
I had for a long time bent over backwards to do what the customer/client requested and wanted done, lots of times ending up with a hideous abomination that I wouldn't want to touch with a computer controlled 20ft pole. I have since reached a point where I am no longer needing to try hard to keep clients or to find clients.
When you find good clients that are easy to work with and respect your knowledge as a designer, work hard to keep them. They will spread the word to their friends/coworkers/etc that you are skilled and are easy to work with. It will take time to build up your list of clients, but it will eventually happen.
I have been asked this several times and my response is always similar to the above. The three things I firmly believe in are:
1: Do not over value a client(this doesn't mean be rude or anything similar, it means don't spend hours and hours doing extra, often times free work or going against design principles, etc to keep the client). If people see good design work, they will inquire, and you will earn a new client. If they see bad work, your SOL. There will always be another client, don't be afraid to fire the current one if they start involving themselves heavily in your work.
2: Do not under value your work. Client needs something changed or updated, charge them. Don't be shy about your pricing. If a client is beating you up about your price, don't bend or break. Its a sign of weakness and they will take advantage of it. I have NEVER had a client tell me afterwards that the money they spent wasn't worth it. I get repeat business from the majority of my clients, and after the first time, they never question the pricing I provide. I charge what I believe is fair, which motivates me to do the best I possibly can, which keeps your customers happy and coming back.
3: Communicate, communicate, communicate. Setup a document in word or photoshop, or however you prefer to do it, that allows you to quickly write up a worklog. Do so at the end of each days work. Get in the habit of doing this, and sending them to your client, even if they did not ask for you to do so. Keeping them informed of your progress on a regular basis will help them to feel that they made the right decision in going with you and that they can trust you to do the work they need done. I usually break it down by hours, so they can see exactly how they are spending their money.
I like to link to this frequently, and even send it to clients from time to time to remind them why they hired me to do the work. Some of the things the person who made this said on it has actually happened to me(clients bringing their mother or other family member to a business meeting to inform me about how I need to change my designs, etc). I was doing fliers and a website for a pet adoption event at one point(specifically dogs only), and the person in charge of the event brought his wife in on the process(older couple). She insisted that everybody liked a variety of animals and that I needed to add several pictures of cats to the website in order to "balance it out". Drove me insane(and was one of the reasons I started firing clients).
Every job is a self-portrait of the person who did it: Autograph your work with excellence.