So why do we need a law?  Why not just let those businesses who do not wish to provide services to gay people, muslims, etc. "out" themselves by posting a notice in their window saying which groups and which members of society they do not wish to provide any service to. 
I am sure no friends/family of gay people, friends/family of muslims, etc. would want to inadvertently support these  businesses anyway.  
Any business that does not post their biases would be assumed to be willing to treat all customers equally.