
If your geometry is static, a GF2 GTS/Pro/Ultra should be able to handle > 100,000 polygons at well over 30 fps. I''ve pushed my GF2 over 9 million tris/sec. If you have lots of dynamic geometry and you are writing a lot of vertices into VBs every frame, you''ll be limited to around 20,000 - 30,000 polygons.
Remember static/dynamic doesn''t relate to movement, but to whether you need to re-write the data every frame. Movement should almost always be performed with matrices.
General speed advice - use Vertex Buffers, use triangle strips, support hardware vertex processing, put your VBs in vram, batch send your polys by texture, use as few DrawPrimitive/DrawIndexedPrimitive calls as you can, make sure you are drawing at least a few thousand triangles per call if possible.
Also special effects like multi-texturing, environmental mapping, bump mapping, fog etc are all slow.
Lastly *make sure* you are using mip-mapping (very important).