Let me rephrase; what I meant to say is that nothing is perfect right away. Obvious statement, right? In hindsight, yeah. But not so much after you've sunk hours into a project only to step back and judge what you've got done. What began as an exciting, great idea just isn't as exciting anymore; maybe not even that great of an idea (to you) anymore. It's stifling! Demotivating to say the least. I'm basically only writing this to convince myself I need to look at the big picture and realize that nothing is ever finished, and it can (and will) improve over time.
Focusing on "finishing"
One of my greatest weaknesses is starting many projects and pursuing ideas only to abandon them mid-way. It's partially out of laziness, but also because I'm just not as motivated to complete said project as I once was. But here's the deal: you'll never actually complete anything and progress in your work until you ship at least a half-assed product. This isn't to say "hey, stop caring about quality and instead make a lot of mediocre work". Rather, understand that mediocre work is better than no work (for the creator and not the consumer at least).
The only way to make actual progress is by looking back at your mistakes and old, lower quality work. Build upon the half-baked alpha v0.01 you released and cherish the fact you did something. Expose it to criticism, and have angry, opinionated people on the internet tear your hard work apart. Because in the end, getting bored and giving up is much more damaging to your ego than some harsh criticism.
Have you got a project you're working on? Has it been a long time coming and you still haven't got it built enough to ship? Suck it up, release the idea, and take the criticism. A great place for some honest feedback is in forums and IRC rooms related to the work you're doing.
Don't be afraid to suck for a while until you've made something you're proud of.