Sometimes it helps me to just... start. Wherever I can.
Not to say that you shouldn't design; obviously any project needs a design, and a big project probably needs a lot of design. But I think it's easy to get paralyzed by the hugeness of the design; I find there is an awkward phase after figuring out what all the big chunks are but before it is clear to me what or how I should be coding.
At that point, I like to just start writing class declarations. Of course, everything I'm writing is likely to be discarded or dramatically changed, but I feel like I get a much better handle on the project once I start working on it. So I'll spend a couple hours writing code, and then go back to my design and refine it - probably I've thought of another package I'll need, or changed my ideas about the hierarchy I'm building. Then, when my design seems to make sense again and/or I get stuck, I go back to the code. After a few iterations of this, my design is complete and I have a good handle on what needs to be done - and when I know exactly what needs to be done, it's often very clear what order it should be done in.