Broadly speaking, I think there are two types of marketing approaches.
The first is what I'll call "Big Bang". This was very popular in the 1990s, particularly for venture-funded startups. In this approach, the sequence of events goes something like this:
1. Have idea
2. Raise Capital
3. Code like crazy in "super stealth mode"
4. Hire VP of Marketing to plan big launch
5. Hire PR agency to launch
I'm not a big fan of this approach for one simple reason: I don't think it works all that well. As a developer, I think this is a wee bit like trying to write a 200 page specification document, develop the product, and expect to release something that works and makes users happy. It just doesn't work that way.
The second approach, the one I do like, is more like Darwinian evolution. This is where you start as early as possible, experiment as much as possible, as efficiently as possible and respond to feedback as quickly as humanly possible. Keep doing more of what works, and less of what doesn't. In my experience, this works really well.
So, if I were working on a startup (which it turns out, I am), I'd lean towards a strategy that looks more like this:
1. Have idea
2. Bootstrap / Beg / Borrow
3. Tell the World
4. Release product to the unsuspecting
5. Get feedback
6. Iterate, iterate, iterate!
I'd like to spend a little bit of time on the middle parts of the above sequence. What I think really works today is discussing the idea with your potential market as early as possible. Ideally, this should happen before you've written your first line of code. Less ideally, you can wait a week or two. The easiest way to do this is to start a blog. You can use one of the free services out there (just make sure to register your own domain name). This way you get commenting (market feedback) and RSS subscriptions automatically. Then, post like crazy and do everything possible to get feedback.
In parallel, put the most minimal version of the software imaginable out there as soon as you can. If you're not embarrassed of your product and are not scared to death when users start banging on it, you waited too long. Get it out there. Yes, people are going to point and laugh at your product. Yes, they're going to ridicule you for building something that has a laughably small set of features, most of which don't work. It doesn't matter. GET IT OUT THERE!
From there, your marketing and your product should evolve in tandem -- organically. Don't even think about advertising, PR, launches and other marketing stuff. All of these things will simply distract you from the real problem: figuring out what customers want. As many failed startups have learned, marketing a product that nobody really wants is awfully expensive and frustrating. Even the perfect marketing strategy (if there is such a thing) is unlikely to work. On the other hand, even naive, unsophisticated marketing can work wonders when everybody wants the product.
So, don't get lured into believing you need some super-sophisticated marketing strategy with a big launch to create a mega-hit product. You don't. If you don't believe me, think of five startups that you really admire and that you think were big hits. Now, do some quick research and figure out how much time/energy they spent on a big-bang launch to "release" their product to the world. Chances are, the launch came well after the product was already out there and somewhat successful.
What do you think? Have you mastered the art of launching a successful software product? Are you a PR person that is gravely offended at my suggestion that startups shouldn't really plan formal launches? Would love to read your thoughts in the comments.