Someone who turns away business because they are racist, sexist and/or anti-homosexual is making a mistake. A business mistake. Does their mistake hurt the person they refuse service to? Yes. Does their mistake hurt their business more? Yes.
Let the racists and homophobes make mistakes as well as expose their stupidity. It opens the door for non-racists and non-homophobes to take advantage of the mistakes and move in on their business.
The notion that if we allowed people to make stupid, self-defeating decisions they wouldn't be able to resist it and they'd go around hurting themselves and others just because is silly. We're afraid of phantoms.
This is only true in an efficient market with plenty of competition. It would likely work the opposite in the old racist south where rich white people with the power and money refuse to frequent an establishment that caters to blacks. Power has a way of destroying freedom and markets just as the opposite spectrum does.
IMO, it's better to educate to the point these laws become unneccessary, but that takes time.