Vereinfacht gesagt wandelt \detokenize alle Token seines Arguments außer den Leerzeichen in Tokens der Klasse other. Die Leerzeichen bleiben Leerzeichen-Token. Interessant ist das vor allem deshalb, weil damit auch keine Befehle mehr expandiert werden. Beispiel:
Zu beachten ist dabei, dass hier die (nicht definierten) Befehle trotzdem zunächst als solche gelesen werden, es wird also zuerst ein Befehlstoken generiert. Dieses wird jedoch nicht als solches expandiert, sondern statt der Expansion in other Token gewandelt. Deshalb sind in der Ausgabe Leerzeichen. Das ist beispielsweise in der folgenden Situation wichtig:
Wie man sieht, werden die Befehlstoken hier nicht mit @, sondern mit \ ausgegeben, genau wie sie auch von \show in die Log-Datei geschrieben oder von \meaning ausgegeben werden. Das ist nun einmal die interne TeX-Darstellung von Befehlstoken (zumindest solange \escapechar nicht geändert wird).
Die genaue Beschreibung findet sich im e-TeX-Manual, da es sich dabei um eine Erweiterung von e-TeX handelt.
Da @saputello ja schon wie gewohnt hervorragend geklärt hat, was \detokenize macht, dachte ich, ich gebe vielleicht ein kleines Beispiel, wo man es einsetzen kann. Das folgende definiert einen Befehl \ifempty{<test>}{<wahr>}{<falsch>}:
Wie in Was macht if? geklärt wurde, expandiert \if so lange, bis es zwei nicht expandierbare Token findet und vergleicht dann deren Zeichencodes. Da \detokenize expandierbar ist, gibt in dieser Definition von \ifempty{<test>}{<wahr>}{<falsch>} der \if-Test nur dann <wahr> zurück, wenn das Argument wirklich leer ist. Wenn #1 leer ist, dann expandiert \detokenize zu nichts und \if vergleicht \relax mit \relax:
nicht funktionieren, da das Leerzeichen hier nach dem ersten \relax ignoriert würde. (Das entspräche also eher einem \ifblank.) Auch eine Eingabe von \relax würde <falsch> ergeben, was mit \if\relax#1\relax ebenfalls <wahr> ergäbe. Das \relax wird von \detokenize ja in eine Reihe von Zeichen mit Kategorie-Code 12 verwandelt, weshalb nun \relax mit \ verglichen wird.
Nachdem das alles gesagt wurde: mit etoolbox stehen einem zahlreiche solcher Test-Makros bereit, man muss sie also gar nicht selbst implementieren.