Nachtrag: das Schreiben der Nachricht hatte (durch Unterbrechung) wohl etwas zu lange gedauert...
Diese Prüfung so hinzubekommen, dass sie funktioniert, dürfte sehr schwer werden oder auch gar nicht funktionieren. Abgesehen von den Namespaces unterhalb von System gibt es genauso welche unter Microsoft und Windows (soweit ich weiß, zumindest), welche grundsätzlich vorhanden sind.
Weiterhin erstreckt sich das .NET Framework über mehrere Assamblies, also muss man sehr weitreichend bei der Prüfung vorgehen.
Nach wie vor kann es Leute geben, die ihre Zeug bestimmten Namespaces hinzufügen oder ihre Assamblynamen genau so wählen, dass deine Prüfung fehlschlägt.
Und eigentlich hätte schon die erste Frage (nicht erst irgendwo mittendrin) in diesem Thread sein sollen: wofür das Ganze? Was soll das bringen? Ich kann mir nichts vorstellen, was man damit effektiv machen sollte, was sich mit einem saubern Design auch anders angehen lässt.
Weiterhin lässt sich so vielleicht feststellen, ob etwas Teil des .NET Framework bzw. der "Standardbibliotheken" ist, aber nicht, ob es Code ist, den "man selbst" geschrieben hat.