With creating the layer for the zoom-in, selection and layer via copy will probably be fastest as you have found.
As for preserving detail with scaling, that will mostly be in the method in which you scale it. Because the image doesn't have enough pixels to freely scale it up to the size you want, your program will need to "guess" at what they pixels would be, taking an average of what color the surrounding pixels are. This process is called interpolation, or resampling.
In Photoshop, Bicubic Smoother looks best for enlargements. You can either change to this while in free transform mode, or change this to the default scaling in your preferences. Bicubic automatic should work best is most cases though.
In Gimp, your options are more limited, but cubic or Lanczos will look slightly better, because they take into account more of the surrounding pixel data than the lesser interpolation methods.
Take a moment to try each of the scaling methods, or look up some website that has. Photos tend to use the higher levels, while pixel art will almost always use nearest neighbor (no interpolation).
If you want more clarity than that, you'll need to use some other method to sharpen the image, or find a higher quality image. Photoshop can work magic, but as the saying goes: garbage in, garbage out. I would suggest looking at the photoshop filters, or look up the high pass overlay method to enhance edges.
Read more about interpolation here under resampling: