Done it so many times....
As Dubbya says it all depends on the server.
I am using IIS running .NET so it's pretty straight forward, much easier than a few years ago (no COM object required any more

).
It also depends on how much process you want to do on the back end.
To start you need to make sure your user won't upload a huge pic. Our days people are taking pics at a zillions mega pixels and you can have a 10Mb pic with a size 5000x3000 pixels. Pretty useless for the web. Of course you can resize the pic using the HTML width tag but this isn't going to change the weight.
What I am using is either .NET drawing features or 3rd party component which will resize the pic and reduce it's weight. I have done this for real estate agencies where I am uploading 10 pics per property, creating 3 different sizes of pics to be used in different parts of the website and also in some opportunities I am even branding the pic with some sort of copyright stuff. Also did it for 2nd hand car dealers, product's catalog, news publishing web site, etc...