When running a game a time is going to come along when you and one or more players are going to butt heads. You are going to disagree on subjects, or receive criticism. One player may make a disparaging comment about another.
Let me say this right now; the advice I give here I have not always followed. I am short tempered, I have made mistakes. I have done things I am not proud of and have been frankly embarrassing. So before anyone checks out posts in my Vindicators game and call me a hypocrite, I just want to state I believe in what I say here, I just do not always follow my own advice. I am fallible.
Now, on to the advice.
First of all, if a player butts heads with you, do not lose your temper. It is just a game. Yes, it is your game, but it is still just a past time you are not being paid to. Keep it in perspective. If he insults you, if he criticizes your GMing style, if he finds fault with your game, follow Dalton's advice and be nice.
Take a breath. Walk away from the computer. Take a day off and think about what you want to do. You are not going to make any good decisions with your blood up. Whatever you do is going to have consequences for you, the player, and the game.
Here are your options. Bear in mind these options will be colored by your relationship with the player and the severity of his actions. One thing I can insist on is to take the conversation off the board, make it private with the player.
If he has insulted another player, then politely insist he/she apologize publicly. There can be no compromise on this. Players must feel as if they can rely on you, depend on you, and that means you standing up for them by standing up to a potential 'net bully. If he has insulted you then whether or not you want a public apology is up to you.
If he has criticized your game, consider what he has said. Maybe he is right. Maybe he has a point. Maybe you do need to change some aspect of the game. If so then you might want to make it a public forum.
However, if he has just come out and said your game sucks without giving a valid reason, then privately ask him up front if he wants to quit. Find out what is wrong, both with the game and perhaps about his private life. Sometimes real life stress causes people to say things they do not mean.
In the end, firing a player must always be an option you should entertain. The quality of their play, the length of time they have gamed with you, their "real world" friendship are all factors you must take into account. But some guys just need to go.