Given that, short of using Ajax, each page is atomic, I haven't found it that difficult to generate quite complex pages in 3 or less queries. Conceptually, a typical page-set involves:
- Context info (related to session and other global state);
- Header (and related 1:0-1 joins);
- Detail (1:M from 2).
It takes some planning ahead; but on the other hand it's an easy refactoring exercise in most cases.