Первое что пришло в голову поиграться с nodeType.
function isNode ( node ) {
var nodeType = node && node.nodeType, isNode = true;
if ( nodeType !== 1 || nodeType !== 9 ) { return !isNode; }
try {
delete node.nodeType;
isNode = node.nodeType === nodeType;
node.nodeType = nodeType;
} catch ( e ) {}
return isNode;
}
Еще интересным является, то что в IE, у dom элемента отсутствует конструктор
function isNode ( node ) {
if ( !node ) return false;
var type = Object.prototype.toString.call( node ).toLowerCase().slice(8,-1);
return (type == "object" && node.constructor == null && typeof node.nodeType == "number") || (/^html/.test( type ) && !/collection$/.test( type ) || type == "global");
}