Maybe it's an idea to find out WHO are creating all these objects and why. Could be that they need their own test environment. Even if you find a method to filter out unused objects, you will just be getting new objects in their place. If they have no business creating objects, then look into restricting their access. (You won't be making any friends though... :-P)
Use profilet to filter CREATE statements.
Btw the profiler route can be very helpful. Sounds like you'll have to trace remotely though.
I have recently used profiler to find unused tables. Use a LIKE filter on textdata for each table. As you find tables, remove it from the filter. Remember to note down what's used and what hasn't been identified as being used. You will have to add other filters to weed out ad-hoc and replication results. Very tedious, but it'll get you their in the end.
As it turned out in my case. They had decided to create each table in each similar database to keep things conform. If the empty table isn't used, then so what. Would have been nice to know this before I spent some much time looking in to removing unused tables......
For better, quicker answers on T-SQL questions, read Jeff Moden's suggestions.
"Million-to-one chances crop up nine times out of ten." ― Terry Pratchett, Mort