Да сбили меня этими Infinity 
Вообще вырисовывался такой вариант:
var a = NaN;
var b = 1;
var c = {};
var d = Infinity;
 
function isNumber(x) {
   return ! isNaN(x * 1);
}
 
alert([isNumber(a), isNumber(b), isNumber(c), isNumber(d)]);
тут isNumber(Infinity) выдает true.
В итоге мы пришли к реализации функционала встроенной функции isFinite.