What I do to make sure I complete a project(of course it fails sometimes) is that I never work on more than one project at a time. That helps me quite a lot. To use the time and focus that it needs
When I work on a project I don't find boredom the problem. Almost no matter what part of a project I'm working on, I'll find something that interest me. The different problems that'll be to solve, and what the best way will be to do it. If I believe in the project I'm working on and think it might be able to turn out fun, I won't give up on it that easily.
What I find a problem sometimes is keeping up the motivation and not begin to slack off. But mostly I just keep pushing myself, because when I'm first into it, it's fun
hehe. Sometimes it also help keeping up the motivation by looking at other released DB games around on the forum.
Also for me, as other programmers, media also keeps being a problem. What I did was that I just jumped into it and purchased Milkshape 3D. Not that my modelling skills are that good yet, but I am however able to make myself media that I can use, which I think, helps greatly.
Another thing I also remember to do is to keep my goals realistic. Of course I want a new challenge in each project I start so I can add to my experience in different areas of a project. But for me, it's all about making sure the challenge won't be too big of a mouthfull
That it's manageable to complete with my current experience. That way, completing the challenge will give me more knowlegde, which will make me able to go even deeper and try out more difficult challenges.
Another problem that I've also got aware of is, that I need to be carefull setting up the code and
keep it clean. That's how I failed one of my projects. In the end the code got so messy that I didn't even wanted to try and sort it out, and therefore gave up on it. I will try and make sure this doesn't happen again.
That's how I look at it anyway. And so far it's helped me quite a bit. Just finished my second game(Viberwars), and I'm now slowly starting to plan out my next game.