GD doesn't resample images, it resizes. The 2.0 is Beta and not recommended for production systems.
Use ImageMagick! It's free, performs well, and has every option under the sun, moon, and stars.
Given its open license, I'd be surprised if somebody, somewhere hadn't made a full-featured photoshop-like GUI with it...
Anyway, I don't resize on upload, I resize on view. I use a function call to resize an image, which saves the resized image with a name that includes the x/y coordinates and then spits back the results.
This way I only resize images that are being looked at, with good performance and minimal use of server resources, and I can resize all thumbnails in the site just by changing two variables, and see the result without waiting.