Sachverhalt:
A. B.X._, wohnhaft in D._ (SG), besitzt mit seiner Ehefrau A.X._ im Kanton St. Gallen vier Liegenschaften im Privatvermögen (drei in E._ und eine in D._) und in den Kantonen Thurgau bzw. St. Gallen vier Liegenschaften im Geschäftsvermögen (drei in F._, G._ und C._, alle TG, und eine in H._ SG); er wird als Liegenschaftenhändler besteuert. Mit Veranlagungsverfügung vom 9. Februar 2006 legte das Gemeindesteueramt D._ für die Staats- und Gemeindesteuern des Jahres 2004 ein im Kanton St. Gallen steuerbares Einkommen der Ehegatten X._ von gesamthaft Fr. 218'600.-- und ein dort steuerbares Gesamtvermögen von 1,41 Mio. Franken fest. Das Gemeindesteueramt C._ (TG) veranlagte die Eheleute X._ am 20. Februar 2006 für die Staats- und Gemeindesteuern 2004 mit einem steuerbaren Einkommen von Fr. 90'100.-- zum Satz von Fr. 206'300.-- und einem steuerbaren Vermögen von Fr. 1'806'800.-- zum Satz von Fr. 3'254'200.--. Eine hiergegen eingereichte Einsprache hiess das Gemeindesteueramt C._ am 6. März 2006 teilweise gut und legte das steuerbare Einkommen auf total Fr. 16'700.-- zum Satz von Fr. 206'300.-- fest. Es führte aus, die Liegenschaften im Kanton Thurgau seien Geschäftsvermögen, wobei die Schuldzinsen nach Objekt übernommen werden müssten. Die privaten Schuldzinsen seien zwar nach Lage der Aktiven auf das Privatvermögen zu verteilen; die Geschäftsliegenschaften im Kanton Thurgau müssten aber entgegen der Ansicht des Kantons St. Gallen keine privaten Schuldzinsen übernehmen. Dementsprechend wurde das Ehepaar X._ neu veranlagt.
B. A. und B.X._ haben am 17. März 2006 gegen die Kantone Thurgau und St. Gallen staatsrechtliche Beschwerde beim Bundesgericht eingereicht wegen Verletzung des Doppelbesteuerungsverbots. Sie beantragen, den Einspracheentscheid des Kantons Thurgau vom 6. März 2006 bzw. die neue Veranlagung aufzuheben und die Sache zu neuem Entscheid an das Gemeindesteueramt C._ zurückzuweisen. Eventuell sei die Veranlagungsverfügung des Kantons St. Gallen vom 9. Februar 2006 aufzuheben und die Sache zum Neuentscheid an das Gemeindesteueramt D._ zurückzuweisen.
Die Steuerverwaltung des Kantons Thurgau beantragt die Bestätigung des Einspracheentscheids vom 6. März 2006. Die Steuerverwaltung des Kantons St. Gallen beantragt, die Beschwerde gegen ihren Kanton abzuweisen, soweit darauf einzutreten sei.
Das Bundesgericht zieht in Erwägung:
1. Angefochten sind der Einspracheentscheid des Kantons Thurgau und die st. gallische Veranlagungsverfügung. Der kantonale Instanzenzug braucht bei Beschwerden wegen Verletzung des Doppelbesteuerungsverbots indes nicht ausgeschöpft zu sein (Art. 86 Abs. 2 OG). Die Beschwerdeführer sind als Steuerpflichtige zur staatsrechtlichen Beschwerde legitimiert (Art. 88 OG). Eine Ausnahme vom Grundsatz der kassatorischen Natur dieses Rechtsmittels besteht bei einer Verletzung des Doppelbesteuerungsverbots (statt vieler ASA 73 S. 247 E. 1.2). Daher kann das Bundesgericht den kantonalen Entscheid aufheben, und wie hier beantragt, die Sache zum Neuentscheid zurückweisen. Auf die Beschwerde ist somit einzutreten.
2. 2.1 Eine gegen Art. 127 Abs. 3 BV verstossende Doppelbesteuerung liegt vor, wenn eine steuerpflichtige Person von zwei oder mehreren Kantonen für das gleiche Steuerobjekt und für die gleiche Zeit zu gleichen Steuern herangezogen wird (aktuelle Doppelbesteuerung); sie ist auch gegeben, wenn ein Kanton die geltenden Kollisionsnormen verletzt, dadurch seine Steuerhoheit überschreitet und eine Steuer erhebt, die einem anderen Kanton zusteht (virtuelle Doppelbesteuerung). Ausserdem darf ein Kanton eine steuerpflichtige Person grundsätzlich nicht deshalb stärker belasten, weil sie nicht in vollem Umfang seiner Steuerhoheit untersteht, sondern wegen ihrer territorialen Beziehungen auch noch in einem anderen Kanton steuerpflichtig ist (Schlechterstellungsverbot; vgl. BGE 132 I 29 E. 2.1 S. 31 f.; 131 I 285 E. 2.1 S. 286).
2.2 Die Beschwerdeführer rügen insofern eine Verletzung des Doppelbesteuerungsverbots, als der Kanton St. Gallen bei der interkantonalen Steuerausscheidung die Schuldzinsen des Privatvermögens aufgrund sämtlicher Aktiven verlegt, der Kanton Thurgau für diese Schuldzinsenverlegung demgegenüber nur die Aktiven des Privatvermögens berücksichtigt habe. Aufgrund dieser unterschiedlichen Zuweisung seien die anteiligen privaten Schuldzinsen von Fr. 62'691.-- für die gleiche Steuerperiode 2004 nicht abgezogen worden. Gegen den Kanton Thurgau machen die Beschwerdeführer namentlich geltend, ihr dortiges steuerbares Einkommen erhöhe sich zu Unrecht um die anteiligen Privatschuldzinsen; der Kanton St. Gallen habe die Schuldzinsen dem Kanton Thurgau zwar zugewiesen, dieser habe sie aber mangels Privatvermögen in seinem Kanton nicht übernommen. Den Eventualantrag gegen den Kanton St. Gallen begründen die Beschwerdeführer im Wesentlichen damit, dass sich ihr Einkommen in diesem Kanton um die dem Kanton Thurgau zugewiesenen Privatschuldzinsen (Fr. 62'691.-- von total Fr. 135'169.-- an Privatschuldzinsen) erhöhe, was ebenfalls zu einer Doppelbesteuerung im gleichen Steuerjahr führe.
3. Grundsätzlich kann ein Steuerpflichtiger, der zwei Kantonen mit Reinvermögenssteuer und Reineinkommenssteuer angehört, verlangen, dass beide Kantone zusammen sämtliche Schulden und Schuldzinsen abziehen. Diese sind bei Privatpersonen quotenmässig, im Verhältnis der in den einzelnen Kantonen gelegenen Aktiven, zu verlegen (BGE 120 Ia 349 E. 2a S. 351 und E. 4 S. 353; 119 Ia 46 E. 4a S. 49). Bei Liegenschaftenhändlern sind Gewinne aus der Veräusserung von Geschäftsliegenschaften ausschliesslich im Liegenschaftskanton steuerbar. Dafür hat dieser sämtliche Aufwendungen zu übernehmen, die mit der Veräusserung zusammenhängen. Dazu gehören u.a. Schuldzinsen auf Fremdgeldern, die der Liegenschaftenhändler zur Finanzierung des Geschäfts mit der im Kanton gelegenen Liegenschaft aufnahm. Abweichend von dem für Nicht-Liegenschaftenhändler geltenden Grundsatz der proportionalen Schuldzinsenverteilung hat nach der bisherigen Rechtsprechung der Liegenschaftskanton beim Liegenschaftenhändler derartige Schuldzinsen objektmässig ausgeschieden zum Abzug zuzulassen (BGE 111 Ia 318 E. 4a S. 319 f., 220 E. 2d S. 226; StR 53/1998 S. 83, 2P.360/1995, E. 2b; ASA 56 S. 569 E. 4a und b; 45 S. 131 E. 3b; Urteil 2P.152/1996 vom 1. Oktober 1998, E. 2b).
4. 4.1 Der Kanton St. Gallen hat eine objektmässige Ausscheidung der geschäftlichen Schuldzinsen vorgenommen, indem er jeder in seinem Kanton und im Kanton Thurgau gelegenen Geschäftsliegenschaft die betreffenden Schuldzinsen zugewiesen hat; zudem hat er die privaten Schuldzinsen proportional zur Lage der gesamten Aktiven, insbesondere der Privat- und Geschäftsliegenschaften, ausgeschieden. Er hat das Gesamt-Nettoeinkommen auf Fr. 218'600.-- und das steuerbare Nettovermögen auf 1,41 Mio. Franken festgesetzt, wobei sich dieses im Kanton St. Gallen steuerbare Nettoeinkommen nach einem Abzug von Fr. 72'478.-- an privaten und Fr. 28'124.-- an geschäftlichen Schuldzinsen ergab. Der Kanton St. Gallen teilte in seiner Ausscheidung dem Kanton Thurgau ein Nettovermögen von Fr. 924'740.-- und ein negatives Einkommen von Fr. 42'770.-- nach Abzug von Fr. 62'691.-- an privaten und Fr. 226'136.-- an geschäftlichen Schuldzinsen zu. Der negative Betrag wurde offenbar vom steuerbaren Einkommen im Kanton St. Gallen abgezogen.
4.2 Die Ausscheidung des Kantons Thurgau ist nur schwer verständlich; dieser beschränkt sich auf eine interkommunale Verteilung und nimmt keine kantonale Ausscheidung vor. Er berechnet einzig das Gesamt-Nettoeinkommen und das Gesamt-Nettovermögen, einschliesslich der Anteile des Kantons St. Gallen, und führt sodann unmittelbar eine Ausscheidung unter den betreffenden Gemeinden durch. Gemäss Einspracheentscheid vom 6. März 2006 ergibt sich in Bezug auf die Gemeinde F._ ein negatives Nettoeinkommen von Fr. 135'957.-- und bezüglich der Gemeinden C._ sowie G._ jeweils ein positives Nettoeinkommen von Fr. 72'786.-- bzw. Fr. 83'092.--; dies mache im Kanton ein Nettoeinkommen von Fr. 19'921.-- aus. Nach der detaillierten Ausscheidung gleichen Datums resultiert ein positives Nettoeinkommen von Fr. 19'921.-- für G._ und jeweils ein negatives Nettoeinkommen für F._ von Fr. 35'245.-- sowie für C._ von Fr. 40'423.-- (nach Zuweisung der privaten Schuldzinsen). Es ist nicht nachvollziehbar, wie sich im Kanton ein positives Einkommen ergeben kann und die Beträge im Einspracheentscheid aus denjenigen in der Berechnung der Ausscheidung resultieren. Ausserdem beträgt das Einkommen in der Rubrik "Steuerfaktoren" Fr. 0.--.
4.3 Demnach sind die Taxationen im Kanton Thurgau als ungenügend anzusehen, und der Einspracheentscheid vom 6. März 2006 ist aufzuheben, da insoweit keine kantonale Ausscheidung vorgenommen worden ist. Art. 127 Abs. 3 BV schützt nur vor interkantonaler Doppelbesteuerung (vgl. E. 2.1), unabhängig von der Art, wie das dem Kanton zugeteilte Einkommen zwischen den Gemeinden ausgeschieden wird. Indessen ist die Berechnung für den Kanton offenbar nicht durchgeführt worden. Vielmehr hat der Kanton Thurgau eine objektmässige Ausscheidung unter den Gemeinden vollzogen, ohne die teilweise negativen Resultate zu berücksichtigen, zumindest gemäss der Berechnung der Ausscheidung vom 6. März 2006.
5. Die aktuelle Rechtsprechung kennt zwei Systeme der Ausscheidung von Schuldzinsen: ein quotenmässiges und ein objektmässiges System (vgl. E. 3).
5.1 Im quotenmässigen System werden die Schuldzinsen proportional nach Lage der Aktiven verteilt. Darunter ist die Gesamtheit der geschäftlichen und privaten, beweglichen sowie unbeweglichen Aktiven zu verstehen (vgl. BGE 121 I 14 E. 6d S. 21; 97 I 36 E. 3 S. 42; siehe auch BGE 119 Ia 46 E. 5 S. 51). Bei der proportionalen Verteilung der Schuldzinsen auf die Kantone im Verhältnis der Aktiven sind die Schuldzinsen in erster Linie auf die Vermögenserträge zu verlegen. Soweit der (nach Lage der Aktiven zu übernehmende) Schuldzinsenanteil den Vermögensertrag in einem Kanton übersteigt, ist dieser von den übrigen Kantonen zu tragen, die noch über einen Nettoertrag aus Vermögen verfügen. Wenn die Passivzinsen im Ganzen den Vermögensertrag übersteigen, ist der Überschuss auf das übrige Einkommen zu verlegen (BGE 120 Ia 349 E. 5 S. 356; 119 Ia 46 E. 5 S. 51).
5.2 Dieses System wird im Normalfall angewandt bis auf zwei Ausnahmen: Die erste betrifft die Kollektiv- und (einfachen) Kommanditgesellschaften, deren Ergebnis für sich bestimmt und in Form eines Nettobetrags den verschiedenen Gesellschaftern zugeteilt wird (vgl. ASA 73 S. 247 E. 4.1 und 4.2). Die zweite Ausnahme betrifft die Liegenschaftenhändler: Bei diesen sind nach der bisherigen Rechtsprechung Schuldzinsen betreffend die gehandelten Liegenschaften objektmässig ausgeschieden zum Abzug zuzulassen oder, bei fehlendem Einkommen, als Anlagekosten zu "aktivieren", somit also einzig im Kanton der gelegenen Sache abziehbar. Dementsprechend haben der Sitzkanton oder andere Liegenschaftskantone Aufwandüberschüsse, die andernorts wegen überschiessenden Gewinnungskosten und Schuldzinsen über den (laufenden) Ertrag entstehen, nicht zu übernehmen. Bei der Abgrenzung der Steuerhoheiten zwischen Sitzkanton und Belegenheitskanton hat das Bundesgericht bei Liegenschaftenhändlern bisher der Verrechnung von Aufwandüberschüssen in der Zeit den Vorrang vor der Verrechnung als Verluste im Sitzkanton oder in anderen Liegenschaftskantonen eingeräumt (vgl. E. 3 und dort zitierte Urteile; BGE 131 I 249 E. 4.2 S. 255; Peter Locher, Einführung in das interkantonale Steuerrecht, 2. Aufl., Bern 2003, S. 135; siehe auch BGE 121 I 14 E. 6b S. 20; ASA 45 S. 131 E. 3c). Die Regelung der objektmässigen Verteilung stellt damit eine Ausnahme im Verhältnis zum allgemeinen System dar. Technisch betrachtet werden die objektmässig zuzuteilenden Schuldzinsen zuerst ermittelt, sodann von der Gesamtheit der Schuldzinsen abgezogen, und schliesslich wird der Saldo proportional verteilt.
6. Es stellt sich die Frage, ob die besondere Regelung für die Liegenschaftenhändler betreffend den Abzug von Schuldzinsen noch gerechtfertigt ist.
6.1 Das System der Zuteilung der Schuldzinsen im Liegenschaftskanton, unabhängig davon, ob die Zinsen von einem Einkommen in diesem Kanton abgezogen werden können oder nicht, passt zu einer Zeit, in welcher der Immobilienhandel stets gewinnbringend ist (vgl. BGE 88 I 337 E. 2 S. 340; Kurt Locher/Peter Locher, Die Praxis der Bundessteuern, III. Teil, Das interkantonale Doppelbesteuerungsrecht, § 7 I D Nr. 33, E. 3c; Ferdinand Zuppinger, Die Besteuerung des Liegenschaftenhändlers im interkantonalen Verhältnis, Bern 1971, S. 79). Es geht bei diesem System wirtschaftlich gesehen um einen Vortrag bzw. eine Verrechnung in der Zeit zum Zeitpunkt des Abzugs, indem die Schuldzinsen während mehrerer Jahre bezahlt werden, ehe sie abgezogen werden können. Die Marktentwicklung in den 90er-Jahren hat aber gezeigt, dass Immobilienpreise auch über längere Perioden rückläufig sein können. Es kann daher nicht mehr damit gerechnet werden, dass die "aktivierten" Schuldzinsen bei einer Veräusserung in aller Regel wieder eingebracht werden können. Vielmehr kann dieses System zu einem definitiven Ausscheidungsverlust führen, indem nämlich der Steuerpflichtige, der die von ihm bezahlten Schuldzinsen später nicht oder nicht vollständig abziehen kann, in den betreffenden Jahren im Ergebnis zu einem höheren als dem erzielten Einkommen besteuert wurde. Dass dem Abzug der Schuldzinsen in der Zeit im Vergleich zu einem unmittelbaren Abzug mit allfälligem Übertrag auf andere Kantone bis anhin der Vorzug gegeben worden ist, erscheint daher als überprüfungsbedürftig, auch mit Blick auf die jüngste Rechtsprechung, die auf eine Vermeidung von Ausscheidungsverlusten abzielt (vgl. E. 5.2; BGE 131 I 285 E. 3.5 S. 289 mit Hinweisen; 132 I 220 E. 4.4 S. 226 f.).
6.2 Wenn auch grundsätzlich daran festzuhalten ist, dass dem Liegenschaftskanton die Gesamtheit der Liegenschaftserträge und -gewinne zur ausschliesslichen Besteuerung zusteht, so bedeutet dies nicht, dass er den Steuerpflichtigen zu einem höheren als dem erzielten Einkommen besteuern darf. Dem Liegenschaftskanton sind vielmehr nach neuer bundesgerichtlicher Rechtsprechung insofern Grenzen gesetzt, als er auf die Situation des Steuerpflichtigen (Unternehmung wie Privatperson) und dessen wirtschaftliche Leistungsfähigkeit (vgl. Art. 127 Abs. 2 BV) Rücksicht nehmen muss: So kann etwa der Belegenheitskanton den Wertzuwachs aus der Veräusserung einer Betriebsliegenschaft ausschliesslich besteuern; er ist aber verpflichtet, den Geschäftsverlust, den die Unternehmung im Sitzkanton (oder weiteren Kantonen mit Betriebsliegenschaften) aufweist, mit dem Grundstückgewinn zu verrechnen (vgl. BGE 131 I 249 E. 6.3 S. 261 f.). Das Bundesgericht hat diese neue Regel zur Vermeidung von Ausscheidungsverlusten in der Folge mehrfach bestätigt und sowohl auf Liegenschaften im Privatvermögen (BGE 131 I 285) als auch auf Kapitalanlageliegenschaften einer Unternehmung ausgedehnt (BGE 132 I 220). Ausserdem werden Schulden und die darauf entfallenden Schuldzinsen quotenmässig, d.h. proportional nach Lage der Aktiven zwischen den betroffenen Kantonen aufgeteilt (vgl. E. 5.1; siehe auch BGE 132 I 220 E. 3.1 S. 224 sowie Urteil 2P.65/2006 vom 31. August 2006, E. 2.3, je mit Hinweisen).
6.3 Soll der wirtschaftlichen Leistungsfähigkeit des Steuerpflichtigen Rechnung getragen (Art. 127 Abs. 2 BV) und insbesondere sichergestellt werden, dass im interkantonalen Verhältnis insgesamt sämtliche Schuldzinsen abgezogen werden, so muss die für Liegenschaftenhändler bisher geltende besondere Regelung betreffend den Abzug von Schuldzinsen (hiervor E. 6.1) modifiziert werden. Als sachgerechte und praktikable Lösung bietet sich an, das allgemeine (quotenmässige) System des Abzugs der Schuldzinsen proportional zu den Aktiven auf die Gesamtheit der Schuldzinsen auszuweiten, also einschliesslich derjenigen auf den Geschäftsaktiven der Liegenschaftenhändler. Das bedeutet, dass auch diese Schuldzinsen nach der allgemeinen Regel zu verteilen sind (hiervor E. 5.1): Soweit der nach der Lage der Aktiven zu übernehmende Schuldzinsenanteil den Vermögensertrag im Liegenschaftskanton übersteigt, ist er von den übrigen Kantonen mit einem Netto-Vermögensertrag zu tragen; ist auch kein solcher Nettoertrag vorhanden, ist der Überschuss auf das übrige Einkommen der Steuerpflichtigen zu verlegen.
Diese Vorgehensweise ist nicht nur einfach zu handhaben, sondern sie hat neben den soeben erwähnten Vorzügen den weiteren Vorteil, dass sie die "Aktivierung" der Schuldzinsen beseitigt und damit indirekt auch die Gefahr einer gesetzwidrigen Bilanzierung: Nach Gesetz sind Aktiven bei ihrer Errichtung höchstens nach dem Wert anzusetzen, der ihnen im Zeitpunkt, auf welchen die Bilanz errichtet wird, für das Geschäft zukommt (Art. 960 Abs. 2 OR; für Aktiengesellschaften: Art. 665 [Bewertung des Anlagevermögens] und Art. 670 OR [Aufwertung, u.a. von Grundstücken]; vgl. StE 2002 B 72.13.1 Nr. 3, 2A.157/2001, E. 2c; Zuppinger, a.a.O., S. 79). Gemäss dem Grundsatz der Massgeblichkeit der Handelsbilanz gelten die zwingenden Vorschriften des Buchführungsrechts grundsätzlich auch im Steuerrecht (vgl. BGE 132 I 175 E. 2.2 S. 177 f. mit Hinweisen). Durch die "Aktivierung" von Schuldzinsen wird buchhalterisch ein Mehrwert der Liegenschaft gegenüber ihrem Buchwert ausgewiesen. Wenn aber der Wert der Liegenschaft die "aktivierten" Schuldzinsen infolge einer negativen Preisentwicklung im Immobilienmarkt nicht auszugleichen vermag, kann dies zu einer Verletzung der gesetzlichen Höchstbewertungsvorschriften führen. Auch dies spricht dafür, von der bisherigen Praxis abzurücken und den Schuldzinsenabzug bei Liegenschaftenhändlern inskünftig ebenfalls nach dem quotenmässigen System, d.h. proportional nach Lage der geschäftlichen und privaten Aktiven vorzunehmen.
7. 7.1 Demnach sind die Taxationen sowohl des Kantons Thurgau (Einspracheentscheid des Gemeindesteueramts C._ vom 6. März 2006) als auch des Kantons St. Gallen (Veranlagungsverfügung des Gemeindesteueramts D._ vom 9. Februar 2006) aufzuheben und die Sache ist jeweils zur Neuveranlagung im Sinne der Erwägungen an die Gemeindesteuerämter zurückzuweisen. Die Beschwerdeführer werden insofern doppelt besteuert, als sie im Kanton St. Gallen auf dem Betrag von Fr. 218'600.-- und im Kanton Thurgau auf dem Betrag von Fr. 16'700.-- taxiert werden, wobei beide Kantone das steuerbare Einkommen auf Fr. 218'600.-- bzw. Fr. 206'300.-- festgesetzt haben, ohne die Schuldzinsen zusammen im Ergebnis vollständig zum Abzug zuzulassen.
7.2 Bei diesem Verfahrensausgang sind die Kosten den Kantonen Thurgau und St. Gallen je zur Hälfte aufzuerlegen (Art. 153, 153a und 156 OG). Diese haben den Beschwerdeführern überdies eine Parteientschädigung ebenfalls je zur Hälfte auszurichten (Art. 159 Abs. 2 OG).
Demnach erkennt das Bundesgericht:
1. Die staatsrechtliche Beschwerde gegen den Kanton Thurgau und den Kanton St. Gallen wird gutgeheissen. Der Einspracheentscheid des Gemeindesteueramts C._ vom 6. März 2006 und die Veranlagungsverfügung des Gemeindesteueramts D._ vom 9. Februar 2006 werden aufgehoben, und die Sache wird je zur Neuveranlagung im Sinne der Erwägungen an die Gemeindesteuerämter zurückgewiesen.
2. Die Gerichtsgebühr von Fr. 2'000.-- wird dem Kanton Thurgau und dem Kanton St. Gallen je zur Hälfte auferlegt.
3. Der Kanton Thurgau und der Kanton St. Gallen haben die Beschwerdeführer für das bundesgerichtliche Verfahren mit je Fr. 1'000.-- zu entschädigen.
4. Dieses Urteil wird den Beschwerdeführern, der Steuerverwaltung des Kantons Thurgau und der Steuerverwaltung des Kantons St. Gallen schriftlich mitgeteilt.
Lausanne, 3. November 2006
Im Namen der II. öffentlichrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Der Gerichtsschreiber: