Faits: A. Le 3 juin 2009, A._ a été arrêté et placé en détention préventive dans le cadre d'une instruction pénale dirigée contre lui pour infraction à l'art. 19 ch. 1 et 2 de la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121). De sérieux soupçons de trafic d'héroïne pesaient sur l'intéressé, pour des quantités dépassant très largement la notion du cas grave au sens de l'art. 19 ch. 2 LStup. Le 3 juillet 2009, le Juge d'instruction de La Chaux-de-Fonds a rendu une ordonnance de confirmation de la détention préventive de A._. Par arrêt du 31 juillet 2009, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel a rejeté le recours de l'intéressé contre l'ordonnance précitée. Elle a considéré pour l'essentiel que de sérieuses présomptions de culpabilité subsistaient à l'encontre de A._, qu'il existait un danger de collusion et que le risque de fuite ne pouvait être écarté. A._ a contesté cet arrêt devant le Tribunal fédéral, qui a rejeté son recours par arrêt du 24 septembre 2009 (cause 1B_240/2009). Dans cet arrêt, la Cour de céans a notamment constaté qu'il existait des charges suffisantes à l'encontre du recourant et que le Tribunal cantonal n'avait pas abusé de son pouvoir d'appréciation en retenant l'existence d'un risque concret de fuite. Par ordonnance du 20 novembre 2009, le Procureur général du canton de Neuchâtel a renvoyé A._ devant la Cour d'assises du canton de Neuchâtel (ci-après: la Cour d'assises) pour infractions graves à la loi fédérale sur les stupéfiants. B. Le 22 décembre 2009, A._ a présenté une requête de mise en liberté. Par décision du 5 janvier 2010, le président de la Cour d'assises a rejeté cette requête. Il a retenu l'existence de sérieuses présomptions de culpabilité et a considéré que le risque de fuite était évident, la garantie proposée par l'intéressé n'étant pas suffisante pour éviter ce risque. A._ a recouru contre cette décision auprès de la Cour de cassation pénale du Tribunal cantonal du canton de Neuchâtel (ci-après: le Tribunal cantonal), qui a rejeté ce recours par arrêt du 9 février 2010. En substance, les juges cantonaux ont constaté l'existence de sérieuses présomptions de culpabilité et ils ont considéré que le risque de fuite n'était pas remis en cause de manière convaincante et que la garantie aux fins de sûretés proposée par A._ était insuffisante. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler cet arrêt et d'ordonner sa mise en liberté. Subsidiairement, il conclut au renvoi de la cause à l'autorité précédente. Il requiert en outre l'assistance judiciaire. Le Ministère public conclut au rejet du recours. Le Tribunal cantonal a renoncé à se déterminer, mais il a relevé que l'audience de jugement devant la Cour d'assises avait été fixée au 27 avril 2010. Le recourant n'a pas présenté d'observations complémentaires dans le délai qui lui a été imparti à cet effet.