You aim too high.
Is it because you are not convinced that aiming lower is the right thing to do; or do you believe it but you have trouble actually doing it?
Perfectionism is common in programmers (perhaps because imperfect syntax doesn't work). It means that you compare your product with "perfection", instead of comparing it with "nothing" (ie. it not existing at all.) If you tend to be critical, and quickly notice faults and omissions, then you may be a perfectionist. It seems to me that perfectionism is the number one reason why many programmers aren't successful in business. It's very difficult to overcome, but one way to begin is simply try to find what does exist in your product (and elsewhere), and just acknowledge that it does. You might not yet be convinced that it matters, but just being aware of it is a start.
For me, a crucially motivating thing was people actually being interested: feedback. When I launched that 2-hour product, I wouldn't have continued if there was no feedback. But there was (a single email!). Feedback can help survive the gap you mention, to paying customer. Before then, just getting something that does something can be very motivating (see my GP comment).
BTW: don't do tdd for a MVP! It takes too long. The advantages of tdd don't really make sense for prototype.
EDIT Ask yourself how you could cut corners, and yet still deliver some of the essence of the thing. Work out what your one essential idea is, and try asking of a particular line of code: is is absolutely necessary for that essence? Some other questions:
- error checking? *cut*
- corner cases? *cut*
- "option to save your work"? *cut*
(unless it's a DB etc, whose essence is storage)
- cover the most common cases? *cut*
(just cover *one* case)
- documentation? *cut*
(except: the essence + how to run)
- debug? *cut*
(provided it mostly runs)
- integration test? *cut*
- define formats/interfaces? *cut*
A more extreme cut is possible... No Code:
- present slides of your product (Steve Blank)
- pretend to have a product, but you just:
post on HN
one webpage (optional: a survey on it + Skype chat)
(feels wrong to me, but can be done ethically)
- adwords campaign + landing page
Consider your PHP friend... did he aim high? What
specific actions did he do that were different from your other friends?
Here's some essays that might help: "Mediocrity is underrated (or better is the enemy of good enough)" http://nayna.org/blog/?p=11
"Getting Real" [6 very short excerpts, I suggest read all esp the footnote/quotes, in this order:] http://gettingreal.37signals.com/ch02_Whats_Your_Problem.php http://gettingreal.37signals.com/ch09_Epicenter_Design.php http://gettingreal.37signals.com/ch06_Race_to_Running_Softwa... http://gettingreal.37signals.com/ch06_Shrink_Your_Time.php http://gettingreal.37signals.com/ch06_Done.php http://gettingreal.37signals.com/ch10_Less_Software.php
and pg's 2008 essay (on HN 2 days ago): http://news.ycombinator.com/item?id=1525068
disclaimer I find it hard to cut corners on my present project. My excuses (which I'd like to overcome) are due to it being based on a new mathematical model:
- if the maths isn't realized correctly, it won't work perfectly
- showing off all its benefits (eg error checking) requires more work
- getting the foundation right will be easier to build on
- patenting (can't be done after release)