Rbraz,
OK so given you get a white background now with new drivers, its a memory issue, the number of loops is critical to success on different cards. The one I gave you looped only 8 tmes, and is white - the correct colour. The one I published loops 14 times and somehow causes your card to get an incorrect result.
It seems, shaders are very prone to problems: even a correct shader will not necessarily work. Great example this loop in mandelbrot. On my x1900 it works up to about 30 loops, on my x800 up to 14 and on your nvidia 6600, at least up to 8 but not up to 14. Other things, ati cards fall back to software rendering as soon as you use a variable as the loop counter: again not a language problem but a card problem. I assume that the compiler is loop unrolling depending on the fixed loop number and not really processing a loop on the card at all (which also explains the lack of memory and limit on loop size). Lastly gl_Color is supposed to be available in both vertex and pixel shaders but on my ati cards although gl_color is not available in pixel shaders (you have to copy it and pass it through another variable, wasting bytes).
Overall, its easy to see why there arent so many intros relying on loops and iteration in shaders.
Shaders for sure are a very immature technology. Rbraz thanks again for helping me to understand this. Have a drop more Karma.