One thing at a time. I set myself a goal for the day - get one thing done. Doesn't matter if it's big of small. That gets me started working (which as I have heard from other devs can sometimes be the most difficult part on some points of a project). If I can get that one thing done, great! I've achieved my goal for the day. I've got some momentum, so I carry it onto the next task. I keep each goal small and realistically achievable, and it results in improved morale since I almost always achieve more than my goal. Kind of a mental trick, but it works for me.
I know what you mean, I tried the whole 'tackling the whole project at once' thing before coming up with my current workflow. It didn't work at all. Thinking of the project as a whole is tiring. It's good to do when pondering the design of the entire project, but when actually coding or making art, I shove everything else aside out of my mind except for what's relevant to what I'm currently working on.
As for prioritizing, I've never really thought about it, because I just work until something gets in my way. Then I code it because I need it to continue. I guess I generally start with systems that affect the most stuff first - like the basic setup for units and their movement, etc. I suppose sometimes I do prioritize easy tasks or tasks that have visible progress as a result afterwards when I need something quick and easy to complete to boost my morale.
Everyone has their own workflow though, so it's important to find what works for you.