Method 1:
Photoshop for the heightmap. There are some other like terragen or scapemaker for random heightmaps. I prefer to do it myself on photoshop with different brushes.
Then I use a program called height, that takes the heightmap and convert it to 3d.
Method 2:
Use Truespace to model the terrain. I start with a cube, flatten it and expand it to be like a piece of wood. Then in the upper face you quad divide and pull up hills. You can use metaballs for dynamic grows, and as final preparation you poly-reduce the model.
----
Finally, with gamespace I cleanup and finish the terrain geometry, Check for holes and scale it accordingly. I paint textures with photoshop. Terrains have a simple planar UV generally.
A note about scale, is that fpsc seem to have a different world scale than gamespace. So, the "fpsc 4 dummies" model (a thread on this forum), has 80 metres on Gamespace scale.
You can download my buggy model and a big terrain on the link below, where you could test the terrain block which is about 1.5 miles wide on both directions. Everything was done with the method above. For use on FPSC you have to edit the terrain model and change its scale (make it bigger) and of couse do the fpe file for it.
Currently I improved my method of UVmapping by using UVMapper instead of gamespace UV editor. If you have 3Impact and delphi you can compile the program include, which has awsome physics.
http://www.3impact.com/3Impact_Engine/yabbse/index.php?topic=941.0
May the 3d force B with U