if (clickNumbers < 10) {
  clearInterval(moveInterval);
  var moveIntervalSecond = setInterval(moveHeading, fast = fast*0.5 );
  $("#heading").text(clickNumbers);
  clickNumbers++;
}
Вы moveInterval очищаете, а moveIntervalSecond - нет. Просто переназначаете. Но старые вызовы продолжают работать.
Зачем вообще нужен moveIntervalSecond?