The theoretical correct form would indeed be “c'è un sacco di...”, since “sacco” is singular. But Italian language, since its onset, is very tolerant of the so called accordo (or concordanza) a senso, i.e. having the verb agree with the meaning of the subject, rather than with its actual number, especially with some very used collective nouns or phrases (un sacco, una massa, un mucchio, un (bel) po', un milione...).
If you read Italian, you can read some about it here: «Con la terza persona [plurale], in genere un soggetto plurale o la presenza di più soggetti coordinati prevede l’accordo alla terza plurale. Deviazioni da questo principio sono di due tipi. Da un lato, un soggetto singolare può indurre un accordo al plurale, specialmente nel caso dei nomi collettivi che ricorrono come testa di sintagmi nominali complessi. In questi casi l’accordo può essere sia con il nome testa collettivo, sia con il nome dipendente al plurale (il cosiddetto accordo a senso):
(11) a. è venuta una massa di amici
b. sono arrivati un mucchio di invitati»