var d = new Date();
d.setDate(d.getDate()-1);
alert(d.getDate()+'.'+d.getMonth()+'.'+d.getFullYear())
var d = new Date(2010,10,1);
d.setDate(d.getDate()-1);
alert(d.getDate()+'.'+d.getMonth()+'.'+d.getFullYear())
Date спокойно воспринимает минусовые значения.
Внимательней читайте документацию и не надо будет изобретать велосипед.)