Sooo...
I solved my problem to a certain extent.
What I wanted to do is disable all data (Edge and 3G) on the 3GS with 3.0, not jailbroken but factory unlocked.
Using the Fake APN Profile unfortunately caused extreme battery drain, as also pointed out here:
http://thebigboss.org/2009/07/27/how-to-disable-edge-maybe-on-30/
This problem can be solved by doing the following:
1) This step is optional but you can check exactly what is going on in your phone by doing it. Download and install iPhone configuration utility from Apple.
Connect your iPhone. In the Console you can follow what is happening.
The massive battery drain is caused by the constant attempts to connect to network, when the Fake APN is installed.
It looks like this:
Sat Aug 15 16:17:56 unknown CommCenter[28] <Notice>: Error (58) activating PDP context 0 that supports types 0: kGprsMissingorUnknownAPN
Sat Aug 15 16:17:56 unknown CommCenter[28] <Notice>: Telling PDP context 0 to go active.
Sat Aug 15 16:17:56 unknown CommCenter[28] <Notice>: connection mask for 0 is 0
This will occur all the time. After you completed the following 4 steps, these entries should be gone.
2) On your iPhone, remove the Fake APN profile.
3) Then disable Push and Notifications
4) Restart your phone
5) Re-install the profile
6) Your battery drain should be gone while data is disabled at the same time.
-----
I know the problem with this is push and notifications will be gone on WiFi as well.
Currently I don't see a solution, however, the bigger problem I could see from my testing is not push but notifications. So if you do have WiFi most of the time, then leave push on, its impact on battery life is less with regards to this problem.
Unlike notifications, it only shows up with errors in the console 2 times or so a minute.
Notifications shows up every second or so.
I really hope this helps, I am still in the process of testing the exact impacts of fetch, push etc
but maybe someone has more input.
Let me know how it goes.