Ay, Vanoord's explanation is correct.
Basically there's a fininte amount of time a web server will let you stay connected doing "something" for. And 20 x 16 mega pixel / straight off the camera shots is probably going to exceed this.
I throw mine up at 2400x1600 with just a bit of optimisation; this means there's a biggish version of the image sat on the server from which all the different sizes are generated so all sizes (thumbnail, mid-size and supersize) are nice and sharp.
The only quality issues are when people upload very small images; e.g. 800x600 (which we'd once have considered big!!) and then the supersize script delivers them at 1600x1200 so the quality is lower than you'd want.
Massive images (e.g. straight off the camera 4000x3000) take up a huge amount of disc space, which together with the managed tape backups run every night is very expensive to host. And to be honest those sizes really aren't needed for delivering over the web.
So anything around the 2000px wide (or 2000px high if portrait format) mark, will be fine.
You'll also find they upload much faster; double the dimensions of and image and you much more than double the file size.
Hope that helps 🙂
my orders are to sit here and watch the world go by