An image only has the amount of detail the original contains. While there can be some benefits to upscaling, it’s almost always a net loss — information can’t magically be created from nothing (or nearby pixels).
There are some very smart upscaling algorithms, and I’m sure they will continue to improve, but generally speaking, I’d stick with the biggest native size you have.
If you absolutely must upscale an image with the aim of creating the impression of more detail, I’d probably do the something like this:
- Upscale using
Nearest Neighbour
to an exact multiple (2×, 3×, 4× the dimensions).
- Clone the original image and upscale to an exact multiple (2×, 3×, 4× the dimensions) using the best interpolation method you have available. For Photoshop, that probably means using
Bicubic (Automatic)
.
- Place the
Bicubic
version as a layer on top of the Nearest Neighbour
version.
- Use a mask for the
Bicubic
version. Set the mask to hide everything, then airbrush in the edge details where being blurry is preferable to being pixelated.
- Add a tiny bit of noise to the entire thing. Not much… just enough to add the impression of detail.
Honestly though, in your case I’d either look for a better quality original, or leave it alone.