I have a HTC Desire with the latest legit firmware. I have Wifi and 3G enabled, and it's usually fine; at home it connects to my (WPA2 protected) router, and when I go outside it switches to 3G. But sometimes, as I pass other Wifi hotspots it stops using 3G so I lose data. I've disabled the 'tell me about open wifi' option. I'm not sure if these Wifi hotspots are open or encrypted but really I'd like to only use Wifi routers I've entered the details of (such as my own). Is this possible?
If you didn't explicitly configure your device to automatically use "open" and unprotected networks, it will only connect to those you explicitly tell it to -- so you needn't worry about this.
As for your "3g turning off" issue: That's very strange. Something in your device still seems to think that, as soon as some Wifi is near, you're going to use that. Probably you can avoid this by turning Wifi off. You needn't do that manually everytime (you might forget, and you might be annoyed when it's not on when you need it) -- but rather let Smart WiFi manage this for you. This app remembers Wifi networks you connected to. When you get disconnected, it will switch Wifi off. As soon as it detects you get close to it (it remembered the cell towers near, so this is it detects the area where you've been connected to some Wifi), it switches Wifi back on.
It just could get weird with "mobile Hotspots", if you connect to another Android device's Hotspot functionality in the middle of a desert, it would always turn Wifi on at that place, even if nothing's around. Oh, well: No cell towers close? So this won't happen :)