Normally, I'm generally in favor of letting people do what they want without interference, but not in this instance. I think that Tequila has a point when he says that simply making anti-discrimination laws won't change racists, homophobes, etc. But the thing is, these laws aren't necessarily made with them in mind, but for the generations after them. It may be a tired cliche, but humans ARE social creatures; they learn what is and what is not okay by watching others. This is especially true for children. Do you think that having children see signs outside businesses saying things like "no n****rs" helps perpetuate racism? You had better believe it does!
In the US, it's been nearly 50 years since the landmark civil rights act that made this kind of display illegal. And looking at the country now, the idea of putting out a sign saying "no n****rs" is so unbelievably appalling to most people that it would likely never be done, even if it weren't still the law. Why the change? I'd say it's because, almost 50 years ago, the American public as a whole decided to declare the practice utterly unacceptable and ban it, which helped make overt public racism far less common over time. In turn, the US is now far less racist than it was in the 50's and 60's, and I think that's a very good thing.
Would this change have happened on it's own, without interference? I imagine that, eventually, yes it would. But it would likely have taken much longer. And I think that artificially speeding up the process through these kind of laws is, in this instance, worth giving up some of our freedom. Of course, those on the other side who are against these changes will disagree, but their views will seem horribly outdated and bigoted just two generations from now, just like "no n****rs" signs are now.