Eu não sei se há uma solução cross-browser. O modelo de caixa IE realmente funciona da maneira que você quer: uma vez que você declarar a largura de um elemento, que é a largura, e então subtrai a largura "interior" do elemento da margem estofamento e fronteira para dar-lhe a largura declarou.
Todos os outros navegadores fazem o oposto: eles definir a largura elemento para a largura declarado e, em seguida, adicione o preenchimento de margem e de fronteira
.
Eu só testou seu código no IE7 e Firefox 3.5 e ambos parecem ser 500px de largura mesmo com a borda preta 10px. É as versões mais antigas do Firefox eu me preocuparia sobre.