The question is, launch what?
If you're doing internal software, you want to get the users involved as early as possible, so giving a few of them something quick is a good idea.
If you're doing open source, release early and often, with a roadmap for future development.
If you're doing shrinkwrap software, you need to give the users something good for their money. Don't count on charging them for the upgrade that actually makes the software useful, unless you're a large established company that already does that. Unless you're known as the primary source of that sort of software, nobody will bother paying you twice after being burned once.
If you're doing web services, you need to have something useful when you release. It can be small, but it should give the user a reason to come back. Otherwise, it's "Foo.com doesn't have anything good on it, don't go there" even after you've implemented the dancing elephants or whatever. You need to leave the user feeling good about your site, and ideally curious to see what you're doing next. If you're going to release with a splash, make sure a whole lot of things are working.
If you're doing embedded, you release when the software is sufficiently close to perfect, and everybody's signed off, and not a moment earlier.