>> Anyway the solution is to connect to template1 and drop any cruft >> that's lying around in it.
> I haven't done any manual messing around with template1 as far as I > know . .
Well, the behavior you describe indicates pretty strongly that there are some non-factory-standard objects in template1. If the database is a few years old, that's not exactly hard to believe --- all it takes is one time having connected to the wrong place and created some stuff. Just go have a look and get rid of what you find ...
What about running the 9.0 tablefunc-uninstall.sql?