If you're open to the public...you're open to the public regardless of the business owners bigotry imo. If the business owner is insulted in some way (e.g. gays flaunt their sexual orientation to intentionally anger him) he should be allowed to kick them out. Now, how to write that into law? I have no idea.
Edit: This brings to mind something that too many "righteous" Christians don't get. Jesus intentionally hung out with the lowest dregs of society...and the reason he did this was not to judge them, but to show them God's mercy and save them. God takes us all as we are...warts and all.
Judge not, that you be not judged. For with what judgment you judge, you will be judged; and with the measure you use, it will be measured back to you. And why do you look at the speck in your brother's eye, but do not consider the plank in your own eye? Or how can you say to your brother, Let me remove the speck from your eye; and look, a plank is in your own eye? Hypocrite! First remove the plank from your own eye, and then you will see clearly to remove the speck from your brother's eye. (Matthew 7:15)
Speak and act as those who are going to be judged by the law that gives freedom, because judgment without mercy will be shown to anyone who has not been merciful. Mercy triumphs over judgment. (James 2:12-13)