особо не проверял, вроде работает
function dateDiff( date1, date2 ) {
var years = date2.getFullYear() - date1.getFullYear();
var months = years * 12 + date2.getMonth() - date1.getMonth();
var days = date2.getDate() - date1.getDate();
years -= date2.getMonth() < date1.getMonth();
months -= date2.getDate() < date1.getDate();
days += days < 0 ? new Date( date2.getFullYear(), date2.getMonth() - 1, 0 ).getDate() + 1 : 0;
return [ years, months, days ];
}
alert( dateDiff( new Date( '2013-11-10' ), new Date( '2014-01-09' ) ) );
alert( dateDiff( new Date( '2013-04-10' ), new Date( '2013-10-20' ) ) );