Since your question is specific to GCC you should consult carefully the documentation for the version you are using. The documentation for GCC 4.5.2 says the following. Which from my reading would indicate that if you avoid dynamic_cast and typeid, you should be ok. That said, I have no personal experience with -fno-rtti. Perhaps you might like to elaborate on why you are using -fno-rtti.
-fno-rtti
Disable generation of information about every class with
virtual functions for use by the C++
runtime type identification features
(dynamic_castandtypeid). If you
don’t use those parts of the language,
you can save some space by using this
flag. Note that exception handling
uses the same information, but it will
generate it as needed. The
dynamic_castoperator can still be
used for casts that do not require
runtime type information, i.e. casts
tovoid *or to unambiguous base
classes.
There is discussion about the relationship between virtual functions and RTTI available at No RTTI but still virtual methods. The short version is that virtual functions should be fine without RTTI.