For web based products at least, there's another very powerful technique: release early and iterate. The sooner you can start testing your ideas, the sooner you can start fixing them.
I wrote the first version of Gmail in one day. It was not very impressive. All I did was stuff my own email into the Google Groups (Usenet) indexing engine. I sent it out to a few people for feedback, and they said that it was somewhat useful, but it would be better if it searched over their email instead of mine. That was version two. After I released that people started wanting the ability to respond to email as well. That was version three. That process went on for a couple of years inside of Google before we released to the world.
Interesting and it goes along with something Guy Kawasaki was saying in a recent podcast I commented on hearing. So the next question comes down to technique - when you're working on something by yourself, how do you schedule builds? I'm thinking I may start to take deliberate "coding vacations" - days I take off* from work in order to push through releases on my various little software projects. Hm... other thoughts?
*My employer offers "comp days" so it's not at the expense of my day job.