Nella maggior parte dei casi si, ma non sempre. magic_quotes_gpc non fa altro che usare la semplice addslashes() che non funziona con caratteri multibyte (Unicode), quindi in alcuni casi sono lo stesso possibili SQL injections.
Poi la direttiva ha anche altri svantaggi: ad esempio non tutto l'input va messo in un DB, quindi ogni tanto ci si trovano backslash dove non dovrebbero essere. Inoltre e' una direttiva deprecata con PHP 5.3.0 e sara' rimossa con PHP 6, quindi meglio abituarsi a farne a meno.
Per evitare le SQL injection le cose migliori da fare sono:
1. filtrare l'input secondo logiche proprie adatte ad ogni specifico caso (nessuna direttiva generale sara' mai efficiente quanto una restrizione scritta apposta), ovviamente quando possibile
2. usare mysql_real_escape_string
3. usare prepared statements e bound parameters