Manually stitching screenshots is probably the most straightforward method, but it's tedious and has a high chance of mistakes. It's also hard to map areas without "landmarks" e.g. Solar Jetman (NES) which has big areas with the same color or pattern. You could facilitate this by using cheat codes to move the camera around in discrete values or keep track of it with a memory/ram watcher. That way you know how the screenshots fit together. You probably need camera cheat codes anyway to reach inaccessible parts and cover everything.
Reverse engineering the game to create a tool or editor that can extract maps is probably the complete opposite method to manual stitching. Technically very complicated and requires great programming skills, but in return makes mapping a lot easier and faster.
Fortunately there is a way to automate screenshot mapping with only modest skills and that is to use scripting or an external tool to control the emulator. All my maps are done with this method. Take NES-games for example were I use FCEUX which has many excellent tools for mapping, particularly lua-scripting:
http://www.fceux.com/web/help/fceux.html?LuaScripting.htmlYou can write a lua-script that essentially moves the camera, take screenshots and stitches everything together i.e. automating the whole process of ripping a map. Creating a working script can take some time though, but a lot less than manual stitching. You probably need to manually fix some things in the rip afterwards to, but most of the work can be scripted.
Unfortunately good emulators with scripting is a bit lacking. So if any emulator author is reading this, please add great scripting support to your emulator and you'll make me a very happy mapper.