What Thor does is the best solution to this problem. So if you don't want to use it, you must either copy its code (if the license allows it) or at least get some inspiration from it.
By the way, there were no software surfaces in SFML 1.6, I don't know what your title refers to. And there's of course no software surface at all in SFML -- surfaces have to be uploaded to the graphics card at some point if you want them to be displayed.