I like Sphinx.
You write your documentation using a plain text markup format, reStructuredText. Sphinx can generate a table of contents from your documentation's structure. You can specify words for the index, and full-text search is automatically generated for the HTML output.
Sphinx can create HTML, Windows HTML help and PDF (via Latex).
I have created end-user documentation for two projects using Sphinx, and have also used it to document a couple of Python packages (Sphinx has a lot of features around extracting documentation from Python modules, it was originally created to write the Python documentation).
It is very easy to get started, and you get professional-looking documentation with a minimal effort.
If you are used to the WYSIWYG way of text editing, using a plain-text markup format might take some getting used to. But I believe it will be worth the effort.
See also: