It's a problem everyone will run into sooner or later. The method suggested by Justin is IMHO not good enough, because
1) the user has to download the whole nine yards, he just sees less, and
2) most browsers are not really good at scaling images - they use 'nearest neighbour' instead of (cubic) interpolation because of speed considerations. The effect is not pretty.
As a solution to the first issue mentioned, try using GD, the graph library. It has some image resizing options, which you can then convert to new images, and then store them as file or as BLOB in a database (phpbuilder has some snippets on the image/blob subject - I myself prefer using databases, just because I hate using files)
This doesn't solve the 2nd matter however. One option is to parse the image data yourself and scale it inside a php script. But heck, forget that option - PHP is way to slow for that (it's a scripting language. bummer. :-).
There is hope, however. The PHP team (and some 'dr ruby') have generously enabled us humble PHP-people to use Java in our pages: hurray! So, somewhere in the next few weeks, I'll be making a few simple image scaling and enhancing java classes which you can easily call from PHP. I'll post here as soon as I have finished it. Maybe I should do an article about it, too. PHP and Java can be good fun - especially in parts where you need the processing power which PHP doesn't have AND you don't want to waste time fidgeting with building your own PHP modules for multiple OS'es