I think you have to have realistic expectations - it's not sensible to expect a perfect steak if you're at a cheap pub so the standard for returning food somewhat depends on where you are. If you're at a posh steak-house then you generally should expect to get it just how you ordered it.
I'm a big believer at ordering a meal that suits the establishment. By that, I mean that if I'm at a cheaper pub then I should order hearty pub food, not something fancy that may be on the meny but may be stretching the skills of the staff who likely work there.
Also separating the server from the food is important - you should always be polite even if you're complaining as they are far more likely to help you and ultimately have to argue your case to the kitchen staff so you want them on your side. So you should give a good tip even if you've had to complain about the food (as long as it wasn't the servers delay that caused it to be cold for instance).