Експеримент в консольке FF:
function isNativeDOMObject(obj){
if(obj.prototype) obj = obj.prototype;
if(obj.constructor) obj = obj.constructor;
try{
Function.prototype.toString.call(obj)
}catch(e){
return true
}
return false
}
alert([
'document.body', isNativeDOMObject(document.body),
'document', isNativeDOMObject(document),
'CSSStyleDeclaration', isNativeDOMObject(CSSStyleDeclaration),
'document.body.style', isNativeDOMObject(document.body.style),
'NaN', isNativeDOMObject(NaN),
'new String("abc")', isNativeDOMObject(new String("abc")),
'new XMLHttpRequest()', isNativeDOMObject(new XMLHttpRequest()),
'XMLHttpRequest', isNativeDOMObject(XMLHttpRequest),
'URL', isNativeDOMObject(URL)
].join('\n'))
На верность результата не претендую, просто рандомно пойманная закономерность.)