Sachverhalt:
A. Die Staatsanwaltschaft des Kantons Solothurn führt gegen X._ ein Strafverfahren wegen schwerer Betäubungsmittelde-likte. Laut Anklageschrift vom 20. November 2009 soll er, zusammen mit seiner damaligen Ehefrau und weiteren Mittätern, zwischen dem 30. Dezember 2006 und dem 7. Juli 2007 unter anderem drei Mal je rund 3 kg Kokaingemisch von Amsterdam durch die Schweiz nach Italien transportiert sowie ca. 1 kg Kokaingemisch und rund 200 kg Streckmittel für Heroin in die Schweiz eingeführt haben. Beim Versuch, weitere 4,5 kg Kokaingemisch durch die Schweiz zu transportieren, wurde X._ am 8. Juli 2007 am Zollübergang Basel-Weil verhaftet. Er befindet sich seit dem 11. Juli 2007 in Untersuchungshaft und seit dem 18. Oktober 2007 im vorzeitigen Strafvollzug.
Am 20. November 2009 erhob die Staatsanwaltschaft beim Richteramt Olten-Gösgen Anklage gegen X._ und beantragte gleichzeitig, den Angeklagten in Sicherheitshaft zu versetzen. X._ beantragte, ihn aus dem vorzeitigen Strafvollzug zu entlassen.
Am 26. November 2009 hiess das Haftgericht des Kantons Solothurn den Antrag der Staatsanwaltschaft gut und ordnete gegen X._ Sicherheitshaft an. Dessen Entlassungsgesuch wies es ab.
B. Mit Beschwerde in Strafsachen beantragt X._, diesen Entscheid des Haftgerichts aufzuheben und ihn umgehend aus der Haft zu entlassen. Ausserdem ersucht er um unentgeltliche Rechtspflege und Verbeiständung.
Das Haftgericht verzichtet auf Vernehmlassung. Die Staatsanwaltschaft beantragt, die Beschwerde abzuweisen.
In seiner Replik hält X._ an der Beschwerde fest.
Erwägungen:
1. Die Beschwerde in Strafsachen nach den Art. 78 ff. BGG ist gegeben. Der Antrag auf Aufhebung des angefochtenen Entscheids und Haftentlassung ist zulässig (BGE 132 I 21 E. 1). Die weiteren Sachurteilsvoraussetzungen geben zu keinen Bemerkungen Anlass, sodass auf die Beschwerde eingetreten werden kann.
2. 2.1 Sicherheitshaft darf nach solothurnischem Recht unter anderem angeordnet werden, wenn der Angeklagte einer mit Freiheitsstrafe bedrohten Tat dringend verdächtig ist und zudem Fortsetzungsgefahr als besonderer Haftgrund vorliegt (§ 43 Abs. 2 lit. c der Strafprozessordnung vom 7. Juni 1970 des Kantons Solothurn; StPO). Liegt ausser dem allgemeinen Haftgrund des dringenden Tatverdachts einer der besonderen Haftgründe - hier Fortsetzungsgefahr - vor, steht einer Inhaftierung auch unter dem Gesichtspunkt der persönlichen Freiheit von Art. 10 Abs. 2 BV grundsätzlich nichts entgegen.
2.2 Die Anordnung von Sicherheitshaft wegen Fortsetzungsgefahr soll den Angeklagten daran hindern, weitere Straftaten zu begehen, dient somit in erster Linie der Spezialprävention. Sie stellt einen schwerwiegenden Eingriff in die persönliche Freiheit dar, weshalb bei der Annahme, der Angeschuldigte könnte weitere Straftaten begehen, Zurückhaltung geboten ist. Eine solche Anordnung ist verhältnismässig, wenn einerseits die Rückfallprognose sehr ungünstig und anderseits die zu befürchtenden Delikte schwerer Natur sind. Die rein hypothetische Möglichkeit der Verübung weiterer Delikte sowie die Wahrscheinlichkeit, dass nur geringfügige Straftaten verübt werden, reichen dagegen nicht aus, um eine Präventivhaft zu begründen. Schliesslich gilt auch bei der Präventivhaft - wie bei den übrigen Haftarten - dass sie nur als ultima ratio angeordnet oder aufrechterhalten werden darf. Wo sie durch mildere Massnahmen (wie z.B. ärztliche Betreuung, regelmässige Meldung bei einer Amtsstelle, Anordnung von anderen evtl. stationären Betreuungsmassnahmen etc.) ersetzt werden kann, muss von der Anordnung oder Fortdauer der Haft abgesehen und an ihrer Stelle eine dieser Ersatzmassnahmen angeordnet werden (BGE 125 I 60 E. 3a; 124 I 208 E. 5 S. 213; 123 I 268 E. 2c).
3. Unbestritten ist, dass der weitgehend geständige Beschwerdeführer der ihm vorgeworfenen Taten dringend verdächtig ist. Er bestreitet indessen, dass Fortsetzungsgefahr bestehe.
3.1 Die Haftrichterin hat im angefochtenen Entscheid erwogen, der Beschwerdeführer sei am 31. November 2006 vom Obergericht des Kantons Aargau unter anderem wegen gewerbs- und bandenmässigen Diebstahls zu einer 26-monatigen Gefängnisstrafe verurteilt worden. Am 4. Februar 2005 sei er bedingt entlassen worden, unter Ansetzung einer Probezeit bis zum 14. Februar 2008. Er habe während der Probezeit erneut delinquiert, bereits im Januar respektive Februar 2006 seien erneut Strafverfahren gegen ihn wegen Diebstahls im Kanton Bern eröffnet worden. Der Beschwerdeführer lasse sich offensichtlich weder durch Strafverfahren, noch durch Freiheitsstrafen noch durch neu eingeleitete Strafverfahren von der Begehung weiterer Delikte schwerer Natur abhalten. Dass die Vorstrafen nicht einschlägig seien, ändere nichts daran, dass es sich auch bei den Vorstrafen um schwerwiegende Delikte handle, die geeignet seien, ein Bild des Beschwerdeführers zu entwerfen, das nicht anders als negativ bezeichnet werden könne. Daher sei Fortsetzungsgefahr zu bejahen.
3.2 Diese Ausführungen sind im Ergebnis nicht zu beanstanden. Zwar sind die im Kanton Bern eingeleiteten Strafverfahren nach den Akten noch hängig und können insofern nicht zulasten des Beschwerdeführers angeführt werden. Fest steht indessen, dass er wegen gewerbs- und bandenmässigen Diebstahls zu einer 26-monatigen Gefängnisstrafe verurteilt wurde, was ihn laut Anklageschrift nicht davon abhielt, nach der bedingten Entlassung noch während der Probezeit schwere Drogendelikte zu begehen. Auch wenn die beiden Deliktsserien nicht einschlägig sind, so weist die Staatsanwaltschaft zu Recht darauf hin, dass in beiden Fällen Habgier als Motiv im Vordergrund stehe. Die Befürchtung der Haftrichterin, dass der Beschwerdeführer in Freiheit erneut versuchen könnte, seinen Lebensunterhalt nicht oder nicht nur durch ehrliche Arbeit, sondern erneut durch Verbrechen zu finanzieren oder aufzubessern, erscheint begründet. Dass der Beschwerdeführer, soweit ersichtlich, die ihm bisher gewährten Hafturlaube nicht missbrauchte und offenbar keine Schwierigkeiten hätte, eine Stelle zu finden, ändert an dieser Einschätzung nichts, da er in der Vergangenheit auch delinquierte, als er eine Arbeitsstelle hatte.
4. Der Beschwerdeführer bringt vor, das Verfahren habe zu lange gedauert und werde nicht mit der gebotenen Beschleunigung vorangetrieben, was zu seiner Entlassung führen müsse.
4.1 Die Rüge, das Strafverfahren werde nicht mit der verfassungs- und konventionsrechtlich gebotenen Beschleunigung geführt, ist im Haftprüfungsverfahren nur soweit zu beurteilen, als die Verfahrensverzögerung geeignet ist, die Rechtmässigkeit der Untersuchungshaft in Frage zu stellen und zu einer Haftentlassung zu führen. Dies ist nur der Fall, wenn sie besonders schwer wiegt und zudem die Strafverfolgungsbehörden, z.B. durch eine schleppende Ansetzung der Termine für die anstehenden Untersuchungshandlungen, erkennen lassen, dass sie nicht gewillt oder nicht in der Lage sind, das Verfahren nunmehr mit der für Haftfälle verfassungs- und konventionsrechtlich gebotenen Beschleunigung voranzutreiben und zum Abschluss zu bringen. Ist die gerügte Verzögerung des Verfahrens weniger gravierend, kann offen bleiben, ob eine Verletzung des Beschleunigungsgebots vorliegt. Es genügt diesfalls, die zuständige Behörde zur besonders beförderlichen Weiterführung des Verfahrens anzuhalten und die Haft gegebenenfalls allein unter der Bedingung der Einhaltung bestimmter Fristen zu bestätigen. Ob eine Verletzung des Beschleunigungsgebots gegeben ist, kann in der Regel denn auch erst der Sachrichter unter der gebotenen Gesamtwürdigung (BGE 124 I 139 E. 2c) beurteilen, der auch darüber zu befinden hat, in welcher Weise - z.B. durch eine Strafreduktion - eine allfällige Verletzung des Beschleunigungsgebots wieder gut zu machen ist (BGE 128 I 149 E. 2.2; Entscheid 1P.256/2002 E. 2, in: Pra 2002 Nr. 161 E. 2).
4.2 Das Obergericht hat eine Rechtsverzögerungsbeschwerde des Beschwerdeführers am 27. Juli 2009 rechtskräftig abgewiesen. Seither wurde das Verfahren mit Einreichung der Anklage am 20. November 2009 jedenfalls fortgeführt und mit der Festsetzung des Termins der gerichtlichen Hauptverhandlung auf den 16. Juni 2010 ist dessen Abschluss absehbar. Auch wenn es angesichts der langen Dauer des Untersuchungsverfahrens nicht unproblematisch erscheint, die Hauptverhandlung erst ca. 7 Monate nach der Anklageerhebung durchzuführen, liegt somit von vornherein keine schwere Verletzung des Beschleunigungsgebots vor, die nach der angeführten Rechtsprechung geeignet wäre, die Rechtmässigkeit der Haft in Frage zu stellen und damit im vorliegenden Verfahren geprüft werden müsste.
Bis zur erstinstanzlichen Gerichtsverhandlung wird der Beschwerdeführer vom 8. Juli 2007 bis zum 10. Juni 2010 und damit knapp drei Jahre in Untersuchungs- bzw. Sicherheitshaft verbracht haben. Der Beschwerdeführer ist entgegen dem in der Replik erhobenen Einwand zum grossen Teil und insbesondere auch für die schweren Tatvorwürfe in Bezug auf die Kokaintransporte als Täter und nicht bloss als Gehilfe angeklagt. In Bezug auf die am 2. Februar 2005 erfolgte bedingte Entlassung wird sich die Frage der Rückversetzung und die Festsetzung einer Gesamtstrafe unter Berücksichtigung des noch offenen Strafrests von 259 Tagen stellen (Art. 89 Abs. 1, 2 und 6 StGB). Dem Beschwerdeführer droht jedenfalls eine drei Jahre weit übersteigende Strafe, wobei die Möglichkeit der bedingten Entlassung nach zwei Dritteln der Strafe nach Art. 86 Abs 1 StGB praxisgemäss nicht zu beücksichtigen ist (Entscheide des Bundesgerichts 1P.493/2006 E. 6.1 und 1P.18/2005 E. 1). Weder das Verhältnismässigkeitsprinzip noch das Beschleunigungsgebot stehen damit der Aufrechterhaltung der Sicherheitshaft bis zur erstinstanzlichen Hauptverhandlung entgegen. Die Rüge ist unbegründet.
5. Die Beschwerde ist somit abzuweisen. Bei diesem Ausgang des Verfahrens wird der Beschwerdeführer grundsätzlich kostenpflichtig (Art. 66 Abs. 1 BGG). Er hat indessen ein Gesuch um unentgeltliche Rechtspflege und Verbeiständung gestellt, welches gutzuheissen ist, da die Beschwerde nicht von vornherein aussichtslos war und die Bedürftigkeit des Beschwerdeführers ausgewiesen scheint (Art. 64 Abs. 1 BGG).
Demnach erkennt das Bundesgericht:
1. Die Beschwerde wird abgewiesen.
2. Das Gesuch um unentgeltliche Rechtpflege und Verbeiständung wird gutgeheissen:
2.1 Es werden keine Kosten erhoben.
2.2 Fürsprecher René Müller wird für das bundesgerichtliche Verfahren mit Fr. 1'500.-- aus der Bundesgerichtskasse entschädigt.
3. Dieses Urteil wird dem Beschwerdeführer, der Staatsanwaltschaft und dem Haftgericht des Kantons Solothurn schriftlich mitgeteilt.
Lausanne, 25. Januar 2010
Im Namen der I. öffentlich-rechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Der Gerichtsschreiber:
Féraud Störi