Is there a module in GRASS or SAGA (or a alternative open program) to do a topographic correction of a landsat image to enhance the land use classification?
Not really a direct answer, but I can't make comments. I haven't used any of the tools on the page but have you had a look at the GRASS image processing page? It lists GRASS tools for classification and image correction.
In GRASS, use i.topo.corr. See http://grass.osgeo.org/wiki/Image_processing#Correction_for_topographic.2Fterrain_effects