особо не проверял, вроде работает
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' ) ) );