Front-to-back *VS* state changes and z-only first pass

We all know front to back rendering is actually known as the best method to save fillrate, however, pipelines are getting faster and longer so, state change overhead may become an issue, especially when lot’s of textures are in use.

So, are we sure front-to-back rendering is necessary? Maybe just minimizing state changes between textures / programs / <other> will give a decent speedup since the pipelines won’t stall reconfiguring themselves.
Some video cards sure, may not like it, especially if they are slow and bandwidth limited, however state changes always took some time to go so, I’m quite sure most video cards will like the idea and give a decent speedup (or at least, they won’t loose too much).
BTW, minimizing state changes is much easier than front-to-back rendering and may be done only once. This is not a problem with today CPU, but I also take in consideration the fact application stage will become faster.
I would like to know what people thinks about that. In fact, many vendors are claiming both metods as optimizations techniques.

I also would like to know if someone tried a z-only pass before actual rendering. I have heard some time of that but I’d like to know if someone experienced something with this.