Faits: A. X._, ressortissant portugais né en 1982, est arrivé en Suisse en 1991 pour y rejoindre sa mère. Il a obtenu le 21 juin 1994 une autorisation de séjour par regroupement familial, régulièrement renouvelée. Entre janvier 1998 et octobre 2001, il est retourné à plusieurs reprises au Portugal et y a vécu quelque temps. Le 20 octobre 2000, il a été mis au bénéfice d'une autorisation d'établissement. X._ ne bénéficie d'aucune formation professionnelle et souffre de troubles psychiques. Il a fait l'objet de plusieurs condamnations pénales: le 25 juin 2002, à 5 jours d'arrêts avec sursis pour contravention à la LStup (RS 812.121); le 10 juillet 2002, à 45 jours d'emprisonnement avec sursis pour avoir circulé sans permis de conduire ou plaques de contrôle et sans assurance responsabilité civile, et pour contravention à l'ordonnance du 27 octobre 1976 réglant l'admission des personnes et des véhicules à la circulation routière (OAC; RS 741.51); le 25 août 2003, à 10 jours d'emprisonnement pour dommages à la propriété et contravention à la LStup; le 23 février 2004, à 5 mois d'emprisonnement pour vol, dommages à la propriété, mise en circulation de fausse monnaie, violation des règles de la circulation routière, vol d'usage, usage d'un cycle ou d'un cyclomoteur sans y avoir droit, avoir circulé sans permis et contravention à la LStup; le 26 mai 2004, à 3 jours d'arrêts pour contravention à la LStup; le 23 août 2004, à 20 jours d'emprisonnement pour vol; le 16 décembre 2004, à 18 semaines d'emprisonnement pour lésions corporelles simples, voies de fait, injures, menaces, violation de domicile, violence ou menace contre les autorités et les fonctionnaires, incendie intentionnel et contravention à la LStup; le 15 novembre 2006, à 14 mois d'emprisonnement et à un traitement ambulatoire en milieu carcéral, pour vol, dommages à la propriété et incendie intentionnel. B. Par décision du 28 novembre 2007, le Service des migrations du canton de Neuchâtel (ci-après le Service des migrations) a prononcé l'expulsion de X._ du territoire suisse pour une durée indéterminée. Le Département de l'économie du canton de Neuchâtel a rejeté le recours de l'intéressé par décision du 17 juin 2009. Par acte du 17 août 2009, X._ a recouru contre cette décision auprès du Tribunal administratif du canton de Neuchâtel, auquel a succédé la Cour de droit public du Tribunal cantonal du canton de Neuchâtel (ci-après le Tribunal cantonal) dès le 1er janvier 2011. Par arrêt du 28 octobre 2011, le Tribunal cantonal a partiellement admis le recours et prononcé l'expulsion de X._ pour une durée de 5 ans. C. Par acte du 30 novembre 2011, X._ dépose un recours en matière de droit public au Tribunal fédéral. Il conclut à l'annulation de l'arrêt du Tribunal cantonal du 28 octobre 2011 et à ce que son autorisation d'établissement soit maintenue, le tout sous suite de frais et dépens. Subsidiairement, il demande que le dossier soit renvoyé à l'instance précédente pour nouvelle décision après des investigations complémentaires. Plus subsidiairement encore, il requiert qu'il soit menacé d'expulsion. II sollicite en outre l'octroi de l'effet suspensif à son recours. Il demande enfin le bénéfice de l'assistance judiciaire. Le Service des migrations et le Département de la justice, de la sécurité et des finances du canton de Neuchâtel ont conclu au rejet du recours. Le Tribunal cantonal s'est référé aux considérants de son arrêt et a conclu au rejet du recours. L'Office fédéral des migrations propose également le rejet du recours. Par ordonnance présidentielle du 5 décembre 2011, l'effet suspensif a été accordé au recours.