First, can we agree that it will never be possible, nor is it desirable, to be able to to change any part of Moodle from a Theme. Depending on what you want to influence, it may be a theme/design change, it may be a change that admins should be able to control with a config option, or it may be something that requires a custom plugin/code hack. And the boundaries between those three things are very blurred.
Anyway, you have missed something, and that is the 'renderers' part of the changes.
As a very crude example have a look at
http://cvs.moodle.org/moodle/theme/custom_corners/renderers.php?view=markup. That is not a great example, because it is very PHP-ish code, rather than template-ish code - but that can, and probably should, be changed as some point. Also, what it achieves is rather limited.
Anyway, the point is that in Moodle 1.x, the custom corners theme was only possible with core code hacks in weblib.php, with if ($THEME->customcorners) { // Do one thing } else { // do something else } in functions like print_box and print_side_block. Now, that sort of customising of HTML can be done entirely within the theme.
Now, moodle_core_renderer (defined in lib/outputlib.php, and not finished yet. Nicolas Connault is working on it, see
MDL-19756) replaces all the old functions in weblib.php and makes them available for themes to change the HTML that is output for basic bits of HTML like a box, or a block on the side of the page, or ... but that is not really what you are asking for. ...
(Although, if you are really desperate, in your themes overridden renderer, in the ->box method, you could start writing code like if ($page->pagetype = 'quiz-view' and $id = 'intro') { to generate different HTML. Yuck!)
Anyway, the bit you are really asking for in phase 2, which is mostly not going to happen until after Moodle 2.0 (because it is a huge job, and we would like to see Moodle 2.0 released this decade if possible

).
In phase 2, to go along-side moodle_core_renderer, we start to define things like moodle_mod_quiz_renderer. moodle_mod_quiz_renderer will have much higher-level functions like, for example
function view_page($quiz, $previousattempts, $startorcontinueattemptbutton, ...) {
}
And the default implementation of that function is most of the code that is currently in
http://cvs.moodle.org/moodle/mod/quiz/view.php?view=markup, after the comment "/// Print the page header".
Actually, that is not the best example page, because it is very hard to separate presentation from logic there. What a student can and can't see about their quiz attempts is not just a presentational decision, but business logic that people care passionately about.
A better example would be
http://cvs.moodle.org/moodle/mod/quiz/attempt.php?view=markup. Again the idea is that almost everything after "/// Print the quiz page ////////////////" goes into moodle_mod_quiz_renderer::attempt_page(...)
Then the point is that mytheme, can choose something different to be output by defining, in theme/mytheme/renderers.php, a mytheme_mod_quiz_renderer, and hopefully the code in there can look quite template-y.
It will still be the case, I expect, that the stuff output by the attempt_page(...) method ends up being embedded into the [MAIN CONTENT GOES HERE] part of layout.php. (Hmm. Actually, that is not a given.) To me that seems like an entirely sensible way to ensure consistency and avoid duplicating the layout.php code in hundreds of different templates. (A Moodle site needs about 650 different full-page templates, that is estimated by the number of places the print_header function is called.)
Of course moodle_mod_quiz_renderer::attempt_page(...) is also not a typical example, because most of what you see there are the questions, and as questions are their own sort of plugin, what a multiple-choice question looks like will probably be controlled by moodle_qtype_multichoice_renderer::question(...) - but the advantage of that is that wherever a multiple choice question appears (e.g. in a
lesson) it will look the same.
So, anyway, that is where we are trying to go, but as I say, it will take some time. Longer even than Moodle 2.0