I have developed applications with both frameworks. At first, when RichFaces wasn't called RichFaces yet, and up to version 3.1.0 I would have advised you to take IceFaces. It was more stable, open source, had more components, and an awesome support forum...I have a lot of repsect for IceFaces guys who made a real supeb job creating truly "live" components which update alone. The only real issue their system had was, in my opinion, how they handled their sort-of conversational scope. There were annoying cases.
Since last summer, in my humble opinion, RichFaces is better. More components (the only ones they dont have compared to IceFaces are now the layout ones, which is no big deal programming yourself, and IceFaces lacks some components RichFaces has now). The components are numerous and do work, support forum has improved a lot here, same for the documentation, and their releases are egular and their dates respected most of the time.
I'd say it's a little more code, for example, to make a simple ajaxed input component in RichFaces, because you need to write the a4j:support tag and specify what to rerender or not. Some see it as more flexibility... What would make me choose RichFaces today over IceFaces, is the compoents have all a programmer needs to make pages fast and good. I mean, I haven't seen yet something I couldn't do with RichFaces. I didn't say it wasn't the case with IceFaces, which remains a top choice, but I think there's a little more flexibility and useability with RichFaces.
That's y 2 cents.