I have had similar experiences as well.
It doesn't help that I am incapable of working on projects in small steps over time. I have a poor memory and general lack of focus, so each time I resume a project in this fashion, I spend much of that time just getting back up to speed. Also, having so many interests makes it easy for me to fall off a project, as it just slips my mind. That's why I normally thrive on working for many consecutive hours, to get as far as possible before I stop. Of course, since I no longer have many consecutive hours to work single-mindedly on a project, I can't even do this anymore.
I find that, for me, comfort is a luxury that is a bane to productivity. If I do have several "open" hours at home to work on a project, I usually end up letting myself get distracted. A good way around this is to go somewhere else - without the comfort of your living space, it might be easier to focus on what you actually want to accomplish.
Thank goodness libraries are still around. The general silence and academic atmosphere make it a great place to sit and focus on pursuits such as programming.
Before I started programming at work, it was only the sheer enjoyment of the craft that kept me programming as a hobby. Like you mentioned, I probably went through my introductory text five or six times over the course of ten years, always stopping for long stretches and getting back into it. Each time I did, however, I could do a little bit more.
Perhaps you need to conceive a project that makes you excited. Imagine you booked a trip to an exotic location that you've always wanted to go. You'd probably be thinking about it a lot up to the time you go, because you'd be excited about it. The same goes for projects - if you're excited enough about it, your brain won't let you forget about it.
Along these lines, you should also have goals in mind. Without clear goals, it can feel like you're just dickering around killing time, even if you're being generally productive. Specific goals can help keep you focused and motivated.