ICEfaces VS. RichFaces
ICEfaces forum is really large, the support team is client oriented and they give a lot of effort into the community field.
ICEfaces seems to grow faster, side by side with JSF compared with RichFaces. RichFaces 4 should work better with JSF2 because they gave a lot of effort into this, though it took them a long time to achieve this development release which isn’t a stable one yet.
I do encounter some problems with compatibility; ICEfaces still has some bugs in Chrome, Safari or IE8 in some of their components.
RichFaces Ajax is a bit more flexible. The ICEfaces partial submit frees you from having a look at what has to be updated and when. One can control the components that are participating in the partial submit but in some occasions you'll need to make some work around.
ICEfaces has a pure Ajax Push mechanism through their Ajax Bridge. This is a pure server push and can be a huge advantage for some projects. RichFaces push (<a4j:push>) periodically perform AJAX request to server, to simulate 'push' data.
I must say that they are both really high quality frameworks (JSF extensions) and have a lengthy component library. ICEfaces also has a good support in portlets. Beyond that, there are alternatives: GWT, Flex, Wicket, etc...