Вы должны объявить timer
вне функцию. В противном случае вы получаете новую переменную при каждом вызове функции.
var timer;
function endAndStartTimer() {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}