That XML documents don't always have a doctype declaration and it is possible to use XML Schema et al to denote an XHTML application. For the case of XHTML 1.1 there exist normative schema documents that reference DTDs (so the end document may merely reference the XSDs, not the DTDs).
But good heuristics nonetheless. I especially think the checking of xmlns attributes should provide to be amongst the most useful means of testing for XML documents (and xml:lang for XHTML).
That's a good point regarding references to XSD schema. The heuristics will still pick this up as they will see the xsi:schemaLocation attribute and the xmlns:xsi declaration, which use namespaces and thus must be XML. Indeed, if the heuristics were weighted rather than just binary, you could say that seeing XSD related attributes is very strong sign that the document is XML :)