I've been playing with the idea of a making tiles using a colour "mask" and a heightfiled. After rotating them and pasting them you take the heightfiled layer, duplicate it twice and emboss one copy and run an edge detect on the other. It is a lot of work to make the heightfilelds, but once a "library" were built it would be fairly easy to assemble these (or generate random maps programatically using imagemagic)

Sample tile colour mask:
tile_color.png

Sample tile HF (note there is a road as well, it is just a small difference from the background, and maybe I shouldn't have done that.... Even terrain could possibly be added in):
tile_hf.png

Rotating these tiles gives me this "map" when embossed:
result_emboss.png

And the edge detect (inverted) for "outlines":
result_edge.png

And the final result... emboss layer set to overlay and edge detect layer set to multiply:
result_combined.png

The only thing it doesn't create are shadows

-Rob A>