I've tried a lot of the dedicated tools, and probably the most advanced is
SAR Image Processor. The only problem is that it's not exactly a user-friendly application, and some of the routines are
very slow.
Honestly, the difference between most modern interpolation routines are fairly small unless you're blowing up an image by some huge factor, or viewing the results at greater than 100%. Most of them do a pretty good job of maintaining sharp edges and avoiding aliasing (jaggies). But none of them can work miracles; you can't squeeze blood out of a stone, and you can't interpolate detail that wasn't in the original capture. If you interpolate an image too much, you'll start to see two things: ringing/halos around edges, and areas that should have fine detail/texture but look too "smooth" because the detail wasn't fully resolved in the original image.
90% of the time the method I use is the one described in
in this article. I've found that it works consistently well and is relatively easy and fast to apply.
Another tip I've found useful is to add some grain to the image before printing (I do this before the final downsize in the above method). It sounds counterintuitive, and it doesn't look so hot on screen; but as I said one of the giveaways of an over-interpolated digital image is that smooth, 'plastic' look where there should be texture. Adding some grain can mask the lack of fine detail and give your print a more film-like appearance.