There's at least one abandoned lcc port, ORIC-C (ftp site) (older zipped version?). A gcc backend is supposedly under development. There's also cc65 (web page) (author's home page), an extended small-C compiler that gets much of ANSI/ISO C right. Early versions did not allow initializers for arrays or structs, but this was fixed around 2000. As of 2002, cc65 is still being maintained, and over time the small-C limitations have been removed until it is very close to ANSI/ISO C; however, it still lacks bitfields and floats. cc65 also includes library functions for several machines. It probably wouldn't be too horrible to run ORCA/C under XGS or something and control it over the serial port with GNO, but I'm note sure if that can generate 6502 code. There was also at one point a project (SCRIPTS?) to build a NES cross-compiler, I think using lcc, but it appears to be gone. An incomplete compiler named Quetzalcoatl exists. In 1999 the author finally released source code. However, Quetzalcoatl does not support structs. c64cc is yet another very incomplete compiler.
There's a mostly complete lcc port by Jolse Maginnis (lcc page) (cvs repository) (lcc page - dead link) (author's page - dead link). You can't initialize structs in a function, but you can globally. consts aren't segregated into the text segment. these things might be fixed in newer versions. As of 2002, this lcc port is still being maintained. There's also another lcc port which was abandoned (by Toshi Morita, I think, who once had it up for FTP on Winternet and I think netcom.)
There are a number of cross-assemblers, but the only one that doesn't smoke crack is i forget which.
'hp48cc' is not even close to a c-compiler -- it's a poor preprocessor that converts c-like code to sysrpl. There is a gcc backend for the HP48.
epocemx is a set of tools for compiling ER5 (Psion Series 5mx, Revo, Revo Plus, Diamond/S3/SonicBlue Mako) programs. Unlike the other ER5 toolchains, it does not require Wine. Also, it can run natively under EPOC as well as on Unix machines.
GnuPoc is a port of Symbian's SDK. There is also a port done by Olaf Flebbe and one by Rudolf König. These three toolchains all run only under Linux and require Wine. However, they may have better drop-in compatibility with old source code than epocemx does. There are also versions of GnuPoc for newer Epoc versions as used in Nokia and Sony/Ericsson products.
All four of these toolchains require Symbian's ER5 SDK. All of them are based around gcc. If you are compiling for a different ARM based platform, you can start out with plain gcc.