Since TeX is a macroprocessor, its error messages are often difficult to understand; this is a (seemingly invariant) property of macroprocessors. Knuth makes light of the problem in the TeXbook, suggesting that you acquire the sleuthing skills of a latter-day Sherlock Holmes; while this approach has a certain romantic charm to it, it's not good for the 'production' user of (La)TeX. This answer (derived, in part, from an article by Sebastian Rahtz in TUGboat 16(4)) offers some general guidance in dealing with TeX error reports, and other answers in this section deal with common (but perplexing) errors that you may encounter. There's a long list of "hints" in Sebastian's article, including the following:
.log file; it contains hints to things you may not
  understand, often things that have not even presented as error
  messages.
  \setcounter{errorcontextlines}{999}
  in the preamble of your document.  (If you're not a confident macro
  programmer, don't be ashamed of cutting that 999 down a bit; some
  errors will go on and on, and spotting the differences
  between those lines can be a significant challenge.)
  The command \tracingall sets up maximum tracing; it also sets
  the output to come to the interactive terminal, which is somewhat of
  a mixed blessing (since the output tends to be so vast - all but
  the simplest traces are best examined in a text editor after the event).
  The LaTeX trace package (first distributed with the
  2001 release of LaTeX) provides more manageable tracing.  Its
  \traceon command gives you what \tracingall offers, but
  suppresses tracing around some of the truly verbose parts of
  LaTeX itself.  The package also provides a \traceoff
  command (there's no "off" command for \tracingall), and a
  package option (logonly) allows you to suppress output to the
  terminal.
errorcontextlines above) and so on.
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=erroradvice