Yay! Another point. Found this one quite easy - but only because I happened to re-read Itzik Ben-Gan's Inside Microsoft SQL Server 2008: T-SQL Querying recently. (Chapter 1)
Itzik describes the logical order of processing as:
FROM
Cartesian Product
ON clause filter
Add Outer Rows
WHERE
GROUP BY
HAVING
SELECT
Evaluate expressions
DISTINCT
TOP
Presentation ORDER BY
I would just add that the physical order of operations performed may differ from the logical order due to query optimisation.
Well done Tom.
edit: added further details after re-reading the question explanation
Paul White
SQLPerformance.com
SQLkiwi blog
@SQL_Kiwi