Well, other than never shipping at all, which is, of course, the point ;)
If you're shipping respirators, cryovalves, automated replenishment systems...
The trick is in threading the needle on this one. In my experience "shipping" doesn't need to be a binary operation. Seek out your early adopters as soon as possible, get your product in front of them, and take their (hopefully) constructively blunt feedback to heart. Ask them what's needed to make it truly usable for the rest of your users.
A first release must not be buggy. But it can have a limited set of functionality.
Imho, the real art of software development is to restrict the initial set of functionality and get that done, as quickly as possible (but not quicker), bug free (sic) and useful.
Yes, I shipped. Yes, it was shit. Yes, it got MUCH better after it got real-world use.