Many factors come into play when one sets out to be successful at design, programming, or any business. Here is a list of what I consider to be the most important aspects of running a successful business.
1.) Knowledge Is Power: Feel free to become an expert in your field. Whether it's design, web developing, programming / coding, construction work, whatever... know what your doing. Your clients will come to you because you are the expert. Don't disappoint them. By becoming an expert, you will shine in comparison with your competitors. And that, from a business perspective, is the best light to be in. So take the time to learn everything you can about what you do.
2.) Treat Your Customers Right: I once had a boss who told me on a daily basis, 'Alfred, these customers pay our salaries.' He was absolutely right. Without customers businesses are nothing. One of the most important factors in business is servicing your customers properly.
3.) Set Proper Expectations: This can fall under the Expert and Customer Satisfaction sections. It is of the utmost importance. Clients can be a lot like children sometimes. Not in a bad way, but often they don't understand what a job might entail, the scope of work, etc. Set proper expectations.
4.) Take Control: Once again, you are the expert. There is a reason your customers come to you. Sometimes you need to take control of a situation and guide your customers to completion. I find that in the design / website business many customers are really anxious to get started, but they may only have partial or vague ideas about their final product.
5.) Provide Quality Work: This one really goes without saying, but you can be the best businessman on the planet with great customer relations, but if you are unable to deliver a quality product it won't take long before your customers spread the word.
6.) Honesty Is The Best Policy: Never lie to your customers. Do not be shady, always be honest. 100% on the up and up as they say. There is no better way to ruin your business' name than lying to your customers.
7.) Do The Grunt Work: I come in contact with so many designers and coders who think life should be like this: kicking back, working when they want, projects flooding in because they're so awesome, etc. I'm not sure what planet they're living in, but that simply isn't reality for most. So many designers, coders, web developers get into the field because they want more freedom.
8.) Be Consistent: Your clients expect to be able to depend on you. Unless they can, they won't trust you with their business. Many things fall under this category. Be consistent in your services, pricing, the works.
9.) Be Professional: One thing I notice a lot of people doing is 'leveling with their customers'. That's a good idea on a few number of circumstances. But your customers aren't looking for a buddy to do their project, they're looking for a professional.
10.) Love What You Do: This last point I think is very important. It's incredibly difficult to be motivated for very long if you're not actually interested or enjoy what you are doing. The thought of making money can only carry one so far.
Conclusion.... You probably noticed if you read through the entire list that most of them focus on customer satisfaction and your relationships with your customers. I find this is of the utmost importance.