Я думаю, что вы выбрали большинство вариантов, лучший способ, который я нашел, - просто подумать о том, как я использую и распоряжаюсь неуправляемыми ресурсами с самого начала.
Как вы сказали, обеспечение эффективного использования IDisposable и размышления о финализаторах и их влиянии на ваше приложение - это наилучшие способы, которые я нашел, чтобы избежать утечек:).
DebugDiag - это то, что команда производительности Microsoft будет использовать при поиске проблем с вашим приложением, и я считаю, что получение дампов памяти для него может быть даже интегрировано в диспетчер задач в Win 7 и Visual Studio 2010.
При использовании DebugDiag обязательно посмотрите на расширения SOS. Возможно, лучшим вопросом было бы спросить, почему DebugDiag и PurifyPlus терпят крах для вашего конкретного приложения? Поскольку это кажется, что это вызовет проблемы, независимо от того, что вы пытаетесь ...