var waitUntilFlag = true;

/**
 * Pausamos ejecucion hasta que se cumpla la condicion
 * @param {number} [miliseconds=100] Tiempo a esperar entre comprobaciones
 */
function waitUntil(miliseconds){
  miliseconds = miliseconds || 100;
  if (waitUntilFlag) {
    setTimeout(waitUntil, miliseconds);
  }
}

function stop() {
  waitUntilFlag = false;
}

// Cambiamos el timpo de espera entre comprobaciones de 100ms (defecto) a 300ms
waitUntil(300);
// Se produce un evento, click o cualquier otro y pausamos invocando a stop.
// Ejemplo: <input type="button" onclick="stop();" value="Stop" />