What business are you in? That's right. SHIPPING SOFTWARE. You do not develop software. You do not write code. All of that is completely immaterial. It is simply a means to do what you are in the business of. The single most important thing that you do is ship software. You WILL ship cringeworthy code. You WILL ship unfinished code. You should darned well accept that. The "When it's ready" is a total cop out. Virtually NOBODY has that luxury of shipping "when it's ready" code. The demands of schedule and finance will dictate when you can ship, not any esoteric nonsense about "when it's ready". If you run out of money developing the software, then who cares if you're holding on to this notion of not shipping when it's ready? Nobody. If code is developed, and that code is scrapped on a shelf, was it ever written?
You can't blame management for your inability to communicate. People sit down and blame management continually about every little detail about "I don't care, ship it!". Remember, that's because what you do is SHIP CODE. Management wants that stuff on the shelf yesterday because you didn't convince them that it wasn't possible. You can say that you did, and that stupid management ignored you, but the reality is that you're just plain wrong.
There HAS to be a reason why there are plenty of successful software applications out there that shipped "unfinished". BTW, how you handle the second part of shipping code (ie what you do with software patches) is where you can redeem yourself.