Well I guess this FacesMessage business is only intended for use in phases before the RENDER phase.
I would love to hear there is a workaround because if not I would have to reorganize my app (when needed) to:
1. Prepare view backing-beans during the INVOKE APP phase (usually through action method execution), create FacesMessages in case of errors during that phase.
2. View refers to backing beans that are already instantiated, therefore no need to use FacesMessage during that phase.
FacesMessage properly shows at the top of the page during RENDER phase.
Please someone tell me I don't have to do that :)