Di origini indonesiane (il padre e il nonno sono nati in Indonesia), cresciuto nell'Ajax, ha esordito in Eredivisie il 26 agosto 2001 contro il Feyenoord. Dopo 6 mesi di stop per un infortunio, appena rientrato salta la stagione 2002-2003 a causa di un nuovo infortunio a entrambe le ginocchia ma rientra la stagione successiva, vincendo il campionato olandese.
L'ultima stagione del calciatore all'Ajax è stata quella del 2007-2008, quando la sua squadra ottenne la seconda posizione in campionato dietro al PSV Eindovhen mentre Heitinga, ha vinto il Premio "Player of the Year".
Nel marzo 2008 è stato ceduto all'Atlético Madrid per la cifra di 10 milioni di euro, la sua clausola di rescissione. Ha debuttato con la maglia spagnola il 13 agosto 2008 durante il terzo turno di preliminare contro lo Schalke 04. In campionato ha segnato il suo primo gol il 30 settembre 2008 nell'incontro vinto dall'Atletico, contro il Málaga.
Il 1º settembre 2009 passa all'Everton, orfano di Lescott ceduto al Manchester City, per 6 milioni di sterline firmando un contratto quadriennale da circa 2,5 milioni di euro annui. Qui mette insieme 115 presenze e 2 gol.
Il 31 gennaio 2014 viene ceduto gratuitamente al Fulham[2].
Il 23 giugno 2014 si accorda con l'Hertha Berlino per due stagioni, con un'opzione per la terza[3]. Firma la prima marcatura con la squadra tedesca in amichevole, il 24 luglio 2014, nel pareggio con il PSV per 1-1.
Il 25 giugno 2015 fa ritorno all'Ajax firmando un contratto di un anno con opzione per il secondo.[4] Torna a giocare in Eredivisie il 31 ottobre in occasione di Ajax-Roda 6-0. Il 1º febbraio 2016 si ritira per intraprendere la carriera da allenatore nell’accademia del club capitolino.
Nazionale
Heitinga con la maglia della nazionale olandese ad Euro 2012.
Heitinga indossa la maglia della Nazionale olandese sin dalle giovanili, al Mondiale Under-20 2001 è capitano della squadra allenata da Louis van Gaal.
Con la Nazionale maggiore non partecipa alla fase di qualificazione a Euro 2004 ma viene convocato per la competizione e parte titolare. Inizia da titolare anche il Mondiale 2006 ma viene utilizzato solo nelle prime due partite e subentra nell'ottavo di finale vinto dal Portogallo.
Gioca sei partite di qualificazione a Euro 2008 e segna due gol nelle amichevoli precedenti la competizione. Anche in questa inizia titolare sin dalla prima partita.
Partecipa inoltre al mondiale di Sudafrica 2010 dove giunge in finale contro la Spagna, perdendo la partita. Nel corso della partita viene espulso per somma di ammonizioni al 109'.
Allenatore
Appesi gli scarpini al chiodo, nel 2016-2017 è il vice di Marcel Keizer allo Jong Ajax. Dal 2017 allena l’Under-19 dei lancieri vincendo il campionato due anni più tardi. Nell’ottobre del 2017 ha diretto anche l’Under-17 per due partite. Dopo aver guidato nel 2020-2021 l’Under-18, nell’agosto del 2021 passa allo Jong Ajax.
Il 27 gennaio 2023 viene chiamato a guidare la prima squadra ad interim dopo l’esonero di Alfred Schreuder che lascia la squadra al quinto posto in Eredivisie con 34 punti dopo 18 turni e a 7 punti dal Feyenoord capolista.[5] Il 29 gennaio, al debutto, batte l’Excelsior per 1-4; l’Ajax non vinceva una partita di campionato dal 23 ottobre.[6] Il 2 febbraio seguente viene poi confermato fino a fine stagione.[7] Dopo 4 vittorie consecutive tra Eredivisie e KNVB Beker, il 16 febbraio al debutto in Europa League la squadra di Heitinga pareggia con l’Union Berlino per 0-0; la sconfitta al ritorno sancirà l’eliminazione dell’Ajax agli ottavi di finale. In campionato, dopo 7 vittorie consecutive che hanno ridotto la distanza dalla vetta di soli 4 punti rispetto ai 7 iniziali, la prima sconfitta arriva il 19 marzo proprio nello scontro diretto per il primo posto con i rivali del Feyenoord (2-3). La seconda sconfitta pesante arriva il 23 aprile nell’altro scontro diretto per il secondo posto contro il PSV (3-0) finendo terzo; l’Ajax termina il campionato proprio in questa posizione a 13 punti dal Feyenoord e a 6 dal PSV mancando la qualificazione alla Champions League dopo 14 anni. In Coppa d’Olanda invece elimina il Twente agli ottavi, il De Graafschap ai quarti e il Feyenoord in semifinale perdendo poi la finale ai rigori contro il PSV. A fine stagione Heitinga non viene confermato.[8]
Il 5 settembre diventa il vice di David Moyes al West Ham Utd.[9] Dopo la partenza del manager inglese nel maggio 2024, Heitinga ha lasciato il club insieme all'intero staff tecnico.[10] Il 17 luglio 2024, viene nominato vice allenatore di Arne Slot, nuovo tecnico del Liverpool.[11]