You should really think about using LOD, because if your 10k model is only 20 pixel height on screen, it does not make sense to render such an amount of polygons at all. For reduced poly models, don't forget to also reduce its texture size, because you don't need 1024x1024 if the result is only max 20x20 pixel onscreen.
The best framerate can be killed if you have tons of shaders running with too many effects. If your shader supports 3 effects, but your model only needs 1 of those, its waste of processing time.
You can replace a tree which is far away with a simple texture instead of the model, even shadows can be faked with textures (if your tree is flat, you need a faked shadow, to get the shadow shape you need)
Dont load 50 tree entities at once, just because your character passes a certain point in your map from which a forrest can be seen. Load them in several smaller groups if the player get closer to that place.
Dont destroy entities if you pick up things which lay around just to let them disapper, and recreate them again if they respawn (like weapons in an fps game)
Just make them (and their shadow) invisible and switch them on again, later.
Entity creation/destroying takes time and might drop your framerate a bit.
Lots of little things... which may drop your frame rate if you don't think about these issues.
But keep in mind that optimization has to be done on older hardware, otherwise it runs smooth on your fast development computer but slow as a stone on a 2 year old machine.
Good luck with your project

-- slacer