You mean top-down to do a pseudo-bottom-up flow? (I guess the terminology is the first place for improvement.) Anyway, I'm a big fan of that flow and have used it a number of times.
1) Create partitions. For simplicity sake, we have a module called top, which instantiates hierarchies A, B, C, D and E. Let's say I put partitions on A-D but not E. (Your top-level is always a partition)
2) I then set Partitions B-D to Empty and have A and Top as source. Compile.
The fitter will fit all of Top/E and /A.
At this point I have some options, depending on my goals.
3a) Set A to Post-Fit Placement, Set B to Source, and leave Top at Source. This will keep the placement of A, and refit Top, B and E around As placement. The nice thing about this is B now knows how A is placed, and can make decisisions based on that. So if you have a critical path going between B and A, it can place B's nodes in the best manner to accomodate that critical path. (Whether Top is set to Source or Post-Fit is up to the user and design dependent. I'm more just trying to show some of the things you can do). Continue in this fashion, with multiple runs setting C and then D to source and the other partitions to Post-Fit. Note that if you don't floorplan, by the time you get to D, it will probably have a pretty holey floorplan to deal with(since A-D are post-fit and spread across it.) If you have room and/or D is not timing critical, this might work without floorplanning.
3b) Set A to Empty, set Top as Post-Synthesis(or Post-Fit) and set B to Source. This basically let's the fitter work on B now, and not A. You absolutely have to floorplan with this flow, because the fitter now doesn't know where A was placed and may set a node in B in an identical place as A, which naturally won't work. After B is fit, set it to Empty and continue to C, where it is now Source. Compile, then set C to Empty and D to Source. Compile. Now set A, B, C and D to Post-Fit and recompile. Even though they had been set to Empty, Quartus still has the info from when they were last fit, and they will now all have post-fit information. I had a design with a module repeated 12 times, and very little interaction between them, none of it timing critical. I had a script that basically went through all 12 of them, fitting them into their LogicLock region while the other 11 were empty, and then a final compile where all 12 were post-fit, and voila, they all appeared with the same placement.
3c) A slight variation. On the first pass, A and Top are source, while B-D are Empty. Let's make E a partition and set it to Empty also. So I now fit A and get it to meet timing. On my second pass I delete the partitions on B-E and everything gets absorbed into the top-partition on the next synthesis pass. This is nice when I really only wanted to isolate/concentrate on A and didn't want separate partitions on the other hierarchies.
Hopefull those are some ideas to help get you going.