A bit longer post, sorry
In this topic @Vandar mentioned his difficulties with staying motivated and focused on one project. I'm sure every programmer and developer knows this. I was thinking about the topic and about how I learned to cope with the issue myself.
I'd like to hear your own ways, and I will present mine. In the recent years I have completed at least three projects I consider major and here's my reflection on what I've learned about staying happy and motivated in personal projects. They're just my own points, using my personal examples. Share your own in replies.
1. Non-commercial development has huge advantages, make use of them and enjoy its luxuries.
It is extremely important to realize that development of libre games is a realm completely different from commercial/proprietary game development -- not just in having free licenses and zero budget. There are wide implications of the way in which we choose to share our games, and these give us extreme freedom in HOW we can develop them. We may develop in ways people would want to develop but can't because they need to make profit.
Profit is the single goal of commercial game development. It's a fight and hard competition requiring a specific development processes that comes at a high cost: this process must be highly planned, organized, fast and predictable. For this it is hastened, ugly and stresses people out to very unhealthy levels. People must be paid huge money to go through this process. And yet I am too often seeing people make the mistake of trying to bring over the same development style and the same habits to libre games, paying the same cost even if there's no need to.
We have our own world and we do things our own way. Realize now that we don't need to be slaves to profit, market, investors or customers. You don't have to have a plan or even a goal. You can let projects sleep as long as you wish. There is no need to declare a project dead once you stop being able to dedicate 100% of your time to it. Feel free to have 10 projects at once and see which ones will keep your attention and grow.
Once you feel even a bit tired of a project, without any worry leave it and go start something else. Don't let yourself develop hatred for your work. For me, for example, the sleeping project now is a chess engine which I've already put a lot of hours into and which I've recently abandoned for my SAF project. I know I'll get back to the chess engine once the time comes: I'll be rested and with a fresh mind. It's almost a joy to come to a project that already a has solid foundation done by past me. I often take complete breaks from programming and just observe my mind lean towards specific projects I have waiting.
2. Simple and fun. That's what your development needs to be, and it doesn't mean it can't be part of something big and serious.
Unix philosophy (the "make simple programs" part) is great from engineering perspective, but it also conveniently comes with a psychological advantage for you, and that is that completing a small project is basically as satisfying as completing a big project. You need to complete things, see concrete results of your work in order to remain happy. And so again, don't mimic the commercial development that seeks to create a big thing in one chunk. Rather split your big idea into multiple smaller ones, e.g. independent libraries that will stand on their own as useful works for others, as something that you've already finished and that will later help realize the big idea.
This is how I was able to finish Anarch: I firstly only created the engine without any intention of creating a game. I spent a long time on the engine, it exhausted me and I had to take a long break afterwards, but I was satisfied as many people liked it. Only later have I decided to create a game, which was similarly exhausting, but I was able to do it as the engine was already there. Have I decided to create the whole game at once I wouldn have been able to do it.
3. Seek meaning, not recognition.
From what I've heard from others I am not alone in having hundreds of ideas for cool projects and therefore suffering from "analysis paralisis". What to do first? If I start something, new ideas keep coming and dragging me away from the current thing. I've realized that being cool is not enough of a fuel for a project. The projects that I actually completed were not just things I though were cool, but things I felt were absolutely necessary to come to existence. Something I felt was important for humanity to have (even if it's a silly small thing).
Find your own meaning whatever it may be. As an example I'll talk about my personal sense of purpose: The meaning I have found lies in the fact that there is basically no public domain game suckless software, and that is something I want to change. There are tons and tons of "traditional" software of all kinds and I probably couldn't make anything too significant there when there are millions of programmers constantly working in this area. But finding this empty space to fill -- public domain suckless software related to games -- I have found meaning. By writing something here I am literally the first person in the history to create such a thing. A Doom type of game that would be completely public domain was something that was alarmingly lacking in the world and that is what has driven me to finish Anarch.
Be careful not to slip into primarily seeking recognition for your project because that goal is very bad in general. It is very hard to satisfy people, their feelings are out of your control and success in this is passing. Your project's internal quality will suffer from trying to making it appealing on the outside, you will start to hate it but will force yourself to continue it for a little bits of extra attention. Just be sure you follow your own meaning and recognition will probably come naturally.