ON DELETE CASCADE on pg_class in PostgreSQL does not work
Constraints are only checked when you execute SQL-level DML commands such as DELETE or UPDATE.  They are not checked when you effect a system catalog data change using a DDL command such as DROP TABLE.  Those take a different code path internally, even though they end up modifying the same data.

As a consequence, you currently cannot do what you are trying to do.  In PostgreSQL 9.3, there will be event triggers, which will address the space your problem is in.