Попробуй так:
var a = 0;
var tm = new Array();
function pr() {
if ( a == 0 || a == 1 ) {
$("#blocks div").eq(0).fadeTo(2000,a);
$("#blocks div").eq(1).fadeTo(3000,a);
$("#blocks div").eq(2).fadeTo(4000,a);
a++;
if ( a == 2) { a = 0; }
tm[a] = setTimeout(pr(),2000);
}
if ( a > 2)
{
$("#blocks div").eq(0).fadeTo(2000,1);
$("#blocks div").eq(1).fadeTo(3000,1);
$("#blocks div").eq(2).fadeTo(4000,1);
}
}
$("#stop").click(function() {
a = 4;
for ( var i = 0; i <= 4; i++) if ( tm[i] ) clearTimeout(tm[i]);
tm = new Array();
} );
Только измени значения в "for ( var i = 0; i <= 4; i++) " на то, сколько у тебя значений "а".