That's what is supposed to happen but not all browsers have actually implemented it that way. For example IE9 progressively renders the page as it reads the code and so will display the part of the page up to the point where the error in the XHTML occurred (that is to point where the missing tag should go). Other browsers will display an error message and some will then display the page up to the point where they considered the error to have occurred (eg. up to the point where an opening tag is missing its corresponding closing tag). See http://www.felgall.com/invxhtml.php for an example.
In IE9 since the error in that page is missing tags just before the </html> tag the entire page renders as if the tags were there since IE9 considers the error to have occurred at the point where the first tag is missing. No error message is produced so the person viewing the page doesn't know if they are seeing the whole page or not.
Chrome displays the following error message:
This page contains the following errors:
error on line 6 at column 106: Opening and ending tag mismatch: p line 0 and html
Below is a rendering of the page up to the first error.
and because the </body> tag is missing there is no content to display prior to the first error so the error message is all you see.
Firefox displays just the error message and tells you where the error occurred.
XML Parsing Error: mismatched tag. Expected: </p>.
Line Number 6, Column 101:<p>This page is real XHTML but it has some tags missing and so should not be able to be displayed.</html>
As you can see, even the browsers that do report an error disagree as to exactly where the error occurred.