I am facing the same issue.
 session timeout
 user do a activity.
 error in firebug - empty respose from server
 UI hangs forever
 user hit F5
 redirect to login page
 user input credential
 redirect to a xml error page
<![CDATA[ Session has expired ]]>
 user hit refresh ..user redirect to a normal application
This use to work fine in 1.8... i am now trying it with 3.3
During the debuging i figured out one major difference between 1.8 and 3.3
in 1.8 when session timeout and user do a activity the response to this request is of the form:
response.status = 200
response.reponseXML = <sessionTimeOut><sessionTimeOut/>
where as in 3.3 when session timeout and user do a activity the response is:
reponse.status = 302 with response.header.location = login page
since status is 302 browser itself make a request for login page.
response.reponseHTML=<HTML CODE OF LOGIN PAGE>
and in jsf.js the response handler just logs a error if reponseXML is null.
So thats why icefaces does not redirect or show popup.
The above details is just my observation and might help somebody to figure out the problem and solution.
I am using icefaces 3.3, glassfish 3.1, spring 3.0.1