Coming to a project can be troublesome.
I noticed that if I don't touch a certain project for a while, the best thing I can do is to run it and play around with it. There's a big chance I'll remember a lot about your project! Not to mention, when I run it, I'll see many things missing.
Sounds obvious, doesn't it?
I read this once in a Cory Doctorow interview. He works for a specific time, then stops, even if he has the energy/motivation/ideas to do more. It stuck in my memory, although at first, I did not understand it.
Well, Hemingway said it better, which is what I learned recently:
I guess it's easier to write a book if you know what's next.
But how to apply this when you make games or software?
Here's my idea!
Leave work with glaring unfinished tasks, so you won't have a problem catching up later.
Process:
1) Run the game in the current state. Would you publish the game like that?
if YES, what's stopping you?
if NO, what is your game missing?
2) Implement the missing feature.
3) Make sure you leave something missing.
4) Finish your work for today.
Repeat the process tomorrow (or whenever you'll continue).
This works with so many types of projects. Breadcrumbs to pick it back up...
Personally I have a text file and the root of every project. Sometimes it's an actual list of things that need to be done still, then a line of hyphens, and the stuff I have cut and pasted below it having done them. If I want to write myself a sentence that I will read first the next time I open the project, it's just the top line in the text file.