javascript è single-thread e, se ho capito bene la tua domanda, non puoi interrompere il loop nel modo che hai teorizzato.
Quando esegui delle operazioni potenzialmente bloccanti (come un loop) o onerose dal punto di vista computazionale il browser impegnerà quell'unico thread, bloccandolo di fatto nella ricezione degli altri eventi o nella responsività dell'interfaccia.
Quindi un modo per bloccare un loop in maniera sicura e ammesso sia fattibile nel tuo caso, potrebbere essere quello di dividere le operazioni in miniblocchi (chunks) e di creare un tempo di attesa tra l'esecuzione di un blocco ed il successivo (setTimeout), in modo tale da non occupare completamente il thread per tutto il tempo ma lasciandolo ciclicamente inattivo per pochi istanti in modo da recepire l'evento di interruzione del task.
L'interruzione consisterà nel fare un clearInterval sul timeout che temporizza la chiamata del chunk successivo.