Jogar uma String em BigDecimal

Como eu faço para jogar uma String que represente um valor em BigDecimal

BigDecimal subtotal = new BigDecimal(0);
String valor = "1.250,00";
subtotal = new BigDecimal(valor.replaceAll(",", "."))

Com valores abaixo de mil funciona, mas desse jeito gera NumberFormatException, qual o melhor jeito de resolver isso sem gambiarras?

Hoje é o dia. Você pode usar Java 5.0? Faça o seguinte:

import java.util.*;
import java.text.*;
import java.math.*;

// Requer Java 5.0 ou superior. 
class TesteDecimalFormatComBigDecimal {
    public static void main(String[] args) throws ParseException {
        DecimalFormat df = new DecimalFormat ("#,###.##", new DecimalFormatSymbols (new Locale ("pt", "BR"))); // esta é metade da mágica...
		df.setParseBigDecimal (true); // esta é a outra metade da mágica.
        BigDecimal valor = (BigDecimal) df.parse ("1.234.567,89");
        System.out.println (valor); // imprime "1234567.89"
        System.out.println (df.format (valor)); // imprime "1.234.567,89"
    }
}