there are programs that claim to be able to do this

thing is though, if you are enlarging an image the program need to interpolate information that is not in the original - in simple terms it needs to fill in the gaps as the image becomes bigger

the smaller the original image the more difficult this is as you start with not a lot

as far as the printing goes - PNG is good if you want to print from image format, but quality always depends on resolution - again in simple terms the bigger the image the better it prints - edit as long as you don't have this issue of course