Milligan speelde tot 2002 voor Paramatta Eagles. Na periodes bij Northern Spirit FC (2002-2004) en Blacktown City (2004-2005) kwam de verdediger in 2005 bij Sydney FC. Door een blessure debuteerde Milligan pas voor deze club in de dertiende speelronde van de A-League tegen Queensland Roar. Hij won met Sydney FC in het seizoen 2005/06 het eerste kampioenschap in de A-League in de clubgeschiedenis. In 2009 verliet Milligan voor het eerst Australië, toen hij een contract tekende bij de Chinese voetbalclub Shanghai Greenland Shenhua. Een jaar later maakte hij de overstap naar JEF United Chiba in Japan, om in 2012 weer in eigen land terug te keren bij Melbourne Victory. Na vier seizoenen en tachtig gespeelde wedstrijden bij deze club maakte Milligan de overstap naar de Verenigde Arabische Emiraten.
Milligan speelde in 2005 met Australië op het wereldkampioenschap onder 20 2005 in Nederland. Hij debuteerde op 7 juni 2006 in het Australisch voetbalelftal tegen Liechtenstein. Milligan behoorde tot de selectie van de Socceroos voor het WK 2006. De verdediger was samen met Michael Beauchamp van Central Coast Mariners de enige twee spelers uit de A-League in de WK-selectie. Beide spelers kwamen op het toernooi echter niet in actie. Hij behoorde tot de selectie voor de Azië Cup 2007, het eerste Aziatische toernooi waaraan Australië deelnam na de overstap van de OFC naar de AFC in januari 2007. Milligan vertegenwoordigde zijn vaderland eveneens op de Olympische Spelen van 2008 in Beijing. Daar werd de selectie onder leiding van bondscoach Graham Arnold uitgeschakeld in de groepsronde na nederlagen tegen Ivoorkust (0–1) en Argentinië (0–1) en een gelijkspel tegen Servië (1–1). Ook op de wereldkampioenschappen voetbal 2010, 2014 en 2018 behoorde Milligan tot de Australische selectie. Hij nam in juni 2017 met Australië deel aan de FIFA Confederations Cup in Rusland, waar in de groepsfase eenmaal werd verloren en tweemaal werd gelijkgespeeld.