You are always better off telling the waiter that your food is not up to scratch as soon as you get it, and send it back, rather than waiting til you get the bill. You didnt give them a chance to put it right. Some people in the trade take it that you're just looking for excuses not to pay a tip, these people are probably earning half what they used to and the waiting staff are probably doing their best. This can account for their behaviour, though it is entirely unacceptable.
Re waiting 45 mins between your meal, my wife and I like to have a good break so we can have a chat. We also like to be left alone, so it's horses for courses. When we go somewhere really nice we tell the waiter what interval we want between courses, or at least say dont be rushing out the main course straight after the starter.
It would drive me mad to wait 30 mins for a drink, or any length of time for the bill. Rather than sit there and stew I would go looking for someone. And I'd show my annoyance, they might not be so suprised to not get a tip if you did so.
I feel for you. We rarely go out to very good places, and when we do there is such expectation. It's hard to take when it does not even come close to meeting that expectation.