It is possible, but it’s going to be a fair bit of programming work for you to build. All advice form here on assumes that you can’t find a pluin to do that – mainly because it’s not a plugin that I have heard anyone else ask for before!
As a strating point, you’ll need to create your own plugin. In the plugin you can set up an area that will let users upload files. After that you’ll need to figure out the PHP code that you’ll need to take the supplied image, and overlay it on top of a background image that you’ve specified and then save it out into another image file that you’ll save somewhere.
It’s not going to be easy, but it is possible.
One big thing to consider is that 99% of people won’t know, understand or care about the difference between JPEG, GIF and PNG images. Because of this I’ll guarantee that you’ll get a huge amount of people that try to upload JPEG images to your system. The problem with that is that JPEG doesn’t support transparency, so you won’t see your background if you overlay a JPEG image on top of it. PNG and GIF do support this, but you still have to trust the users enough to remember to save the image with the transparency set up.