Everytime I start something I have internal fire that keep me going for a while, then something happens and game/other project is scrapped or (rarer) released as unfinished demo.
Do you know what exactly happens? Maybe you could avoid maneuvring into these situations, then.
I often find myself struggling to complete projects (art, studying and programming, too) when I'm stuckor burnt out. For example, about a year ago, I started programming with AS3.0. Had not much experience in programming until then, except from writing textadventures in BASIC when I was a child and a two weeks course on C++ some years ago. I bought a book on developing flash games (finding out along the way that the author programmed in BASIC as a child, too, which motivated me even more) and dived into it. I worked through the whole book in two weeks, doing not much else than coding and popping little games out. I started to get dizzy in front of my PC, I couldn't force myself to eat and drink properly because coding (and seeing the results) was so addictive! Furthermore, I started skipping steps that I didn't fully understand in the hope of getting the grip on them later. I was wrong. I ended up with several projects, most of them unfinished because I had too high ambitions and too little knowledge to match them. My energy was drained, too. I lost orientation in my code, programmed without having a finished concept first and got very frustrated for not finishing my games. I learned the following out of this experience:
-> even if you think you're born to make games (so did I, I wanted to make my own games since I was four years old!) and ideas are pouring out of your brain like mad, you have to plan them like you'd plan the invasion of a zombie-infested strip of well secured land. Write your story down, make a list of characters, develop a flow diagram, construct the 'skeleton' of your levels. You don't have to write down every little detail yet, but it should outline what there will be in your game. This serves as a route you can follow while doing your project. This avoids the "...and now?"-feeling you get when there are still gaps and unplanned sections.
-> Don't overdo it. Like I wrote, I'm prone to doing this, too, but I try to avoid it by working in small packages of time rather than open-end. Stop yourself when you notice you avoid bathroom brakes at the latest. If you don't do it, you will end up enegery-drained and without any power to face the rest of the project. It's like your brain avoids letting you even open the project once out of fear you might make a marathon out of working on it again. I usually lost my motivation after excessively working on a project I burned for. Burning for a project is ok, as long as you keep some of your fuel left.
-> Get out from time to time. Apart from giving you some nice Vitamin D, you relax your eyes, get new impressions and fresh air. Meeting friends is also nice and helps you to avoid thinking in code for a while which gives your brain some rest. Of course, if you aren't at risk to focus only on your project and forgetting everything else, this might sound strange, but for me, it really is necessary to remember these things.
-> Keep your ideas organized. Apart from planning your actual project, it helps to keep a small book you write your ideas for games into. This way, you have more capacities to focus on the current project rather than trying not to forget all the other interesting ideas.
-> Write to-do Lists. Cross things that are done out and keep those lists to remind you of what you already achieved, even if it might not be visible from the game as it is. I find that doing those lists motivate me when I'm a bit down. Write small steps on these lists and not too big ones. For example, "doing the graphics for 5 chars" is better (and more achievable) than "Do ALL the graphics!".
-> If you're struck because you have a problem, try to find out where exactly further learning is needed. Do this step by step and don't rush it. There's always time to do a little test coding to see if you understood the concept correctly. It pays off in the end.
-> Tell as less people as possible about your project. Doing so increases pressure, even if no one actually does anything. It's enough to know that they know and are (hopefully) excited to see results. I really can't work well with people asking how my projects are going, at least not until everything is nearly finished (then it's ok and helpful).
Well, these are the things I learned. They probably won't work for everyone, but I increased my ability to finish projects with them.