Hola:
Con las librerías GD, puedes crear una imagen a partir de la original(imagecreatefromjpeg, por ejemplo), luego también crear otra con la subida (imagecreatefromstring(file_get_contents($_FILE["fichero"]["tmp_name"])), y por último mezclarlas con imagecopy...
Empieza informándote de esas cosillas...
Saludos