Zunächst hat man natürlich die Möglichkeit, nach dem Laden jedes Pakets zu ermitteln, ob ein Befehl bereits definiert ist. Das geht sehr einfach, mit `\show\foo` oder auch mit etwas wie:
\usepackage{scrbase}
\ifundefinedorrelax{foo}{}{\typeout{Jetzt ist \string\foo definier!}}
definiert!}}
Weitere Möglichkeiten werden bereits in den Antworten der Frage »[Undefined control sequence - wie finde ich heraus, was fehlt?](http://www.texwelt.de/wissen/fragen/750/undefined-control-sequence-wie-finde-ich-heraus-was-fehlt)« geliefert. Dabei sei auch ausdrücklich auf die Möglichkeit der (La)TeX-Befehlsliste hingewiesen, die in der Antwort von @sap zu finden ist. Dort kann man gezielt nach den Paketen und Klassen suchen, die einen bestimmten Befehl definieren. 100% sicher ist das zwar nicht, weil die Liste nur in gewissen Abständen aktualisiert wird und nur *normal* definierte Befehle auf Anwenderebene findet, aber ich finde das trotzdem nützlich.