ObjectAlloc + mallocstacklogging (google them and you should find information on it)
Be warned: it's very very slow and uses a ton of ram to do this analysis. My machine can't really handle it, unfortunately.
You can also use the instance counting mechanism I added to Adium (Check the #defines in AIAdium.h in the 1.0 source), but it will only count subclasses of AIObject, so if (for example) the issue is a bunch of NSDictionaries being kept around, it won't reveal that.