There is nothing more frustrating than having nice ideas and halt your work because you simply, at some point, lack motivation to move forward.
I deal with this kind of situation since I was only 10 years old and started some projects with programming languages. Never finished any of those projects, but learned a lot though.
Not that I am a perfectionist or something like that, but I never had pleasure releasing something that is half-assed. From my point of view, everything can be improved at some point.
The problem with that kind of attitude is that you end up having nothing to show and no feedback from others. Right now I am trying to work on my side projects (even this blog) and release what I can in some way. If there is a window to improve I will do it later, because right now I think it worth more to have something out there (used by someone, to get feedback or for any other purpose) than trying to make something flawless on the first try.
When developing a project you will end up improving your skills (programming, drawing, composing, painting) over time and something done like 12 months ago will look like shit because you got better. My point is: release. If someone criticise you try to look what he did, his projects, his skills. Is he that good? In my opinion, people who are really good don’t smother who is beginning.
So… that is how I am trying to deal with all the things now. I am trying to get shit done. That is how I am dealing with my motivation.
Other than that I try to work with a schedule, goals, tasks and deadlines. That helps to keep track of my things and it’s satisfying to see how it improve.