The upgrade is practically automatic. iTunes nags you every time you plug in an out-of-date iPhone and only requires a single click. That and the jump from 3.3.1 to 4.x is an absolute night-and-day excruciating difference in speed and usability.
It's not 4.x, it's 4.0. 4.1 and 4.2 beta run just fine on iPhone 3G.
Only the jump to 4.0 is excruciating; 4.1's performance is on-par with 3.1.3
It merely helped in my situation. If 3.1.3 ran at 100%, 4.0 ran at 40-50% and 4.1 bumped it back up to 60-70% at best (in my experience).
Right but i think the issue is more that once you have upgraded and realize the problems, you are practically forced to keep it as there isn't an easy way to roll back to a previous iOS release.
You might not be forced to upgrade to iOS 4 but you are then left with an old unpatched OS that let things like jailbreakme happen. Also if you try to get any help from Apple they refuse to do it without your device being fully upgraded, at least that has been how it has been for me.