I switched to iPhone 4 from a 3gs and never regretted it. The retina display is amazing, it's faster, wifi is stronger (for me at least), it's just newer and better than the 3gs. So my vote is for the 4.
Absolutely not. I considered going back to my 3GS right after I got my iPhone 4, but now? No way. I have grown to appreciate the design and feel of the phone. Not to mention the retina display.
iPhone 4 obviously. Faster, better display, and it'll just last longer because it'll be able to run on the same OS as the next iPhone and still run smoothly.