AUCTeX is an emacs/XEmacs package for writing documents with LaTeX, TeX, ConTeXt, docTeX or Texinfo. It gives you syntax highlighting, code completion, and also includes
preview-latex, which lets you generate and view PNG previews of parts the code directly (e.g. math) in the Emacs buffer.
For working with citations and cross-references AUCTeX works very well with reftex.
One can get a hint of AUCTeX's capabilities by reading Useful shortcuts or key bindings or predefined commands for emacs+AUCTeX.