One, to solve that issue you can turn that sub-query into a derived-table/inline view.
Second, since you applying a predicate to a subordinate table (Quote), you have, affectively, turned that query into an INNER JOIN. I'm not sure that's what you intended or not.
I'm pretty sure this WON'T work, but maybe it'll give you an idea:
ON PROJECT.ProjectID = QUOTE.ProjectID
,Max(QuoteDate) AS QuoteDate
) AS Q
ON QUOTE.ProjectID = Q.ProjectID
AND QUOTE.QuoteDate = Q.QuoteDate