I a few words (well, not so few):
GWT: is a "too Googly" ajax framework (imho), very nice but I don't like the idea of turn almost all the Java code into html and JS AJAX (it's not an easy comparation, 'cus diferent concepts). Also, to compare with ICEFaces you need to see into GWT MVC, which is a attemp to expand the framework, building a MVC capable framework above the GWT thenology.
Spring: too xml verbose. DI (and IO) are the heart of Spring, but you can't compare with ICEFaces 'cus Spring have several parts and Spring Web Flow development is not the best part, even implementing a MVC patter. Btw, ICEFaces development has a smoothly integration with Springframework DI (not Spring Web Flow), and if you like it and you can deal with too much xml's configuration, then you can build very good applications. In other words you can use ICEFaces to replace Spring Web Flow and part of Spingframework to develop the core application's services (DI and more).
Struts: Struts 1.x is almost dead, so we need to write about Struts 2.x (WebWork). As we know Struts 1.x changged completly to become Struts 2.x, it was done merging Struts 1.z and WebWork ... and finaly droping most of the Struts 1.x part. Struts, was a "the facto" MVC Web development framework, but it has several problems mainly due to its Page Control Centric approach, when JSF become to the scena, with component and event control (well, the man that make Struts 1, worked on JSF 1 too), then JSF turn into "the facto" MVC web development framework, even more becouse JSF was a standard and was designed to be extensible.
ICEFaces: It's a JSF implementation with build-in AJAX extension (and others) integrated completly into the framework, therefore, ICEFaces is a MVC web development framework extended with AJAX. The best part is that it's a powerfull framework and you don't need to write a single line of JavaScripts, just concentrate on Java Development (to build the View and the Control of the MVC patter), and use the compenent in the framework or build yours. Of course, you need to integrate some sort of technology to build your model, we say: EJB3+JPA, Springframework+JDBC, Springframework+JPA,Java Classes+JDO, Java Clasess+JDBC, and so on :-)