Cita:  
					Iniciado por furoya  
  Gracias. Es algo de tu escuela : "la línea del menor esfuerzo". (¿Seguís poniendo código en 'citas'?)
    
 te respondo con una nueva versión 
 Cita:  var banners = new Array();
banners[0]= new Array("1156.png","http://www.enlace1.com");
banners[1]= new Array("1441.png","http://www.enlace2.com");
banners[2]= new Array("2192.png","http://www.enlace3.com");
 
var intervalo = '';
 
(function cambiarImagen(antiguo) {
 
var nuevo = Math.floor(Math.random() * banners.length)
 
if (antiguo == nuevo) {
clearTimeout(intervalo);
cambiarImagen(nuevo);
} else {
console.log(nuevo);
intervalo = setTimeout(function(){cambiarImagen(nuevo)}, 2000);
}
 
})(banners.length);
    se trata de comparar el valor que se está mostrando con el nuevo valor que se mostrará, y jugar con limpiar y restablecer el temporizador hasta que el antiguo y el nuevo valor sean distintos. 
es posible que se pierdan unas milésimas de segundo, nada apreciable, al limpiar el temporizador e invocar de nuevo a la función. 
en la primera invocación se le pasa el largo del arreglo, para así asegurarnos que el primer valor es aleatorio