I am facing the same chore and found this thread. Our teams got tag-happy and now we have a bunch of junk or obsolete tags. It looks like the Excel export is the best way to attack this. I am thinking about something like this.
1. Export all the tags to excel and save in a "Tag List" sheet.
2. Export the work items that have a tag using John's (Tags.ObjectID != "") filter above - it works). However, it looks like I have to do this one artifact at a time: user story, defect. feature, test case, etc. In the Export Query type, I don't see any higher-level object in the hierarchy.
3. Append all the work items into a big honking "Work Item" list.
3. Write a macro or excel function that searches the Tag List for a match in the Work Item list and displays either "HIT" or "MISS". (Extra credit: count the occurences of each hit).
4. Create a Custom Grid for all tags, and bulk-edit the "MISS" tags to archive or delete.
This task is pretty far down in my backlog for now, unless there's a better way to do this.