Наверное, самый железный вариант:
var a = NaN;
var b = 1;
var c = {};
var d = Infinity;
var e = null;
function isNumber(x) {
return Object.prototype.toString.call(x) == "[object Number]" && isFinite(x);
}
alert([isNumber(a), isNumber(b), isNumber(c), isNumber(d), isNumber(e)]);