I believe this is a relatively simple one in the case I've witnessed anyway. The scenario is that you turn on WiFi, connect and then lose access to the exchange. Turn off WiFi go back to 3G and voila you're connected again.
The reason that the phones and iMail (to name a few) cant connect to the Exchange from inside the network is because you will most likely be using an external IP or URL right? Thus meaning that everytime you try to access this URL from inside the server bounces packets backwards and forwards around the network not truly knowing what to do with them.
I found that if you create a new DNS zone for (mail.domain.com), create an A record within that zone leaving the host blank (to use parent domain). Then point it at your internal exchange.
This time if the users phone requests connection to mail.domain.com they get redirected (internally) to 192.168.x.x/24
Note - You may not need to make a new zone if your domain is already running as the primary. The example I refer to above uses one domain out of about 16 that are running on this network, hence the requirement to build a zone of the sub domain.
Did I solve your problem? Buy me a virtual beer by clicking on a Google ad :). Thanks!