This isn't really a php problem I think. As far as I know, you can modify the headers sent as you like. You can probably send them as straight binary code, and the user will be asked to download it, rather than view it.
header('Content-type: binary/octet-stream');
header("Content-Disposition: attachment; filename=DownloadedImage.jpg; size=".$imagesize)
Don't know if that will get you what you want, but it may point you in the right direction.
I'll refer you to a site that gave me this with a quick Google search:
Stream images to browser, save/open option(s)
~Brett