If you use the MVP pattern described here, you can switch the views' implementations based on the user agent.
You can have a ClientFactoryImpl and ClientFactoryMobileImpl. Then you use GWT.create(ClientFactory.class) to create the implementation defined into the .gwt.xml file.
Here is an example of the .gwt.xml file
<replace-with class="com.bell.cts.e911.ers.web.client.ClientFactoryImpl">
<when-type-is class="com.bell.cts.e911.ers.web.client.ClientFactory" />
<when-property-is name="user.agent" value="ie6" />
</replace-with>
<replace-with class="com.bell.cts.e911.ers.web.client.ClientFactoryMobileImpl">
<when-type-is class="com.bell.cts.e911.ers.web.client.ClientFactory" />
<when-property-is name="user.agent" value="mobilesafari" />
</replace-with>
You can always set up user.agents using the technique described here : http://code.google.com/p/google-web-toolkit/wiki/ConditionalProperties
http://jectbd.com/?p=1282