The theory behind threading worldgen seems to be roughly correct in this thread--it may be less beneficial to gameplay than threading pathfinding or something else, but it might be a good simple lesson for Toady; I think he's admitted he doesn't have any experience doing multithreaded programming. Even with the most complicated solutions, multithreaded worldgen is still a relatively simple system, because they don't require synchronization or much cross-thread communication.
About memory concerns, I'd like to expand on something that was mentioned earlier. The vast amount of rejects appear long before worldgen gets to the state where it runs histories and begins hogging hundreds of megabytes. So, you would probably want to make a modification to worldgen, by splitting it in two: phase one is the initial generation of the world, running rivers, making lakes, etc, which seems more processor intensive than memory intensive. Phase two is the history stuff, which probably won't trigger any rejects. Once worldgen is divided into phases, you implement multiple worldgen threads. Finally, as soon as a thread successfully completes phase one, it notifies the main thread to stop the other generation threads, so it can begin rapaciously using all of your computer's memory to make funny historical stuff happen.
If Toady wants to get experience multithreading, this is probably where he should start. I've implemented simple threading in Java (relatively easy) for pathfinding, and I can imagine it would be a months long challenge in C, what with the complexity of the DF engine.