Granite is a good rock to use as it's pretty inert. It's black and white speckled appearance would look fantastic on a dark or black substrate.
Slate is good, also inert, make sure it really is slate though and not the fake stuff often made for driveways. A paving or builders yard should stock good slate. You can glue it together with aquarium sealant in layers ( which the way it forms naturally if you look at it's structure ) to make caves ( good for cichlids ) and decorative formations for the tank. Make sure you file or break off any sharp edges though, or fish may damage themselves.
You can also buy large bags of smooth river stones/pebbles from garden centres, builders yards and the like, which are usually used in water features. But if you test them with vinegar ect, ( they are usually safe and inert ) they can be placed around the tank in clusters, or again, glued together with aquarium sealant.
I have been wondering as to wether natural sandstone can be used in domestic tanks. It is found in rivers and streams everywhere, especially in areas where stone banks overhang the water. If I were to really test, scrub and boil a found piece, I reckon it should be fine. Any thoughts?