LaTeX is flexible, especially if you are able to read sources to redefine macros.
You could redefine \addcontentsline:
\renewcommand*{\addcontentsline}[3]{\addtocontents{#1}{\protect\contentsline{#2}{#3}{}}}
Alternatively, you could redefine \contentsline, like Herbert did, or this way:
\renewcommand*{\contentsline}[3]{\csname l@#1\endcsname{#2}{}}
If you wish to remove page numbers for a certain level, such as subsection, redefine \l@subsection{title}{page number}. Perhaps you would like to do that, because dotted toc lines, used for certain levels, are not meaningful without the page number.
You could even redefine \thepage locally to be empty, in a group together with \tableofcontents.
Note: if you use hyperref, solutions should be modified since hyperref makes modifications to TOC macros for hyperlinking.