JavaScript Closures y setTimeout

Los cierres son algo que todavía no entiendo completamente en JS. Creo que este es un problema de cierre. Estoy tratando de crear una barra de progreso. Cada x segundos quiero incrementar el ancho de un DIV. Aquí está la parte que se supone que debe hacer eso:

for(i=0;i<=counter;i++){
    setTimeout(function (){
        myDiv.style.width = wIncrement+"px"
        timeIncrement++;
        wIncrement++;
    },timeIncrement*1000);
}

Lo que quiero que suceda es que cada x segundos aumente el tamaño de la barra. Por supuesto, eso no es lo que está sucediendo.

Estoy bastante seguro (espero) de que este sea un problema de cierre, pero la sintaxis para mezclar con un setTimout me desconcierta por completo. ¿Alguien puede ayudarme a comprender los conceptos necesarios para solucionar el problema de cierre en este ejemplo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta