There are several ways I've managed to do push messages to the client:
If you are using appengine, research the Channel api
https://developers.google.com/appengine/docs/java/channel/If you have access to an MQ server (like ActiveMQ), consider using a JMS/STOMP/WebSocket protocol stack
http://blog.furiousbob.com/2011/03/20/receiving-jms-gwt/as per Timothy, gwteventservice using the Comet method of pushing messages to the client.
I've refactored MVP applications designed to use GWT RPC, consolidated the Async callback code into a bona fide Model layer injected into the presenter layer, and then replaced the Model layer with an async protocol stack that communicates via jms/websocket to push updates to the presenter/client component.