I suggest, Facelets is a best choice to power the JSF implementation. However, it is not a replacement for JSP. You can use three of them together. Especially, if we speak about JSF 1.2
Actually, I do not know the reason why JSP and Facelets can be called competitors. They are very complimentary to each other. Facelets has a great and smoothly integrated with JSF templates framework (but not only it, of course). At the same time, the data iteration like jstl c:forEach is out of the scope for facelets. You cat create new JSF component with JSP code snippets, like it is shown in the Facelets documentation. Note that I mean JSP2.1 + JSF1.2 + Facelets. The previous versions of JSP and JSF does not work very well together. JSP2.1 and JSF1.2 are not final, but pretty stable already. I have a project template that contains JSP2.1 , JSF1.2 and Facelets and works under Tomcat 5.5.x. I can share it, if somebody is interesting to test-drive the nearest future.