Finishing a game, like any other software project (or real life..) is not easy. It's done of so many little steps requiring everything that you can give up in any time.
So it's interesting to have some feedback about this topic from Derek Yu (Spelunky?), in this article. My suggestion is to read it and think before next game, next idea, next .. everything :D
Try only to not think too much