This article on the University of Kentucky website is pretty good, it seems the cancer cells hide because they do not express CD80, a co-stimulating molecule. Co-stimulating molecules are often necessary for an effective immune response.
This is a big part of the article and I think they do a good job of explaining it so I'll just quote:
"People once thought that cancer occurred because of a weakness in the
body's immune system," says Yannelli, "but we have known for years
that overall that is not the case. The immune system in cancer
patients actually works quite well. Otherwise, they could not survive
the disease for long periods of time nor could they fight off other
viruses, which they routinely do. The problem is not that the immune
system doesn't work; it is that the immune system doesn't recognize
According to Yannelli, for the body's defense system to work properly,
key antigens must be presented in a specific way to lymphocytes, the
cellular mediators of the immune system, which then kill the cancerous
cells. Normally, antigens are tipped off by co-stimulating molecules.
When the co-stimulating molecules are not present, the immune system
does not "see" the cancer cell, and therefore does not act to destroy
Scientists have discovered that lymphocytes have very narrow job
descriptions, each one designed to attack only a specific molecule.
The researchers have also discovered a wide range of co-stimulating
molecules. A critical co-simulating molecule is CD80. Because cancer
cells do not express CD80, they are invisible to the lymphocytes
responsible for destroying them.
This paper has more on the function and mechanism of CD80.
Thanks to @Nico for pointing out that not all cancers are the same so the generalization discussed in this answer may not be true of all cancers.