Por ejemplo dándole otro nombre al campo se podría solventar. He notado complicaciones entre navegadores:
   Código PHP:
    <form name="formulario">
    <input type="text" name="name" value="hola" />
    <button onclick="
        alert('document.formulario[\'name\'].value = '+document.formulario['name'].value);
        alert('document.formulario.name.value = '+document.formulario.name.value);
        alert('document.formulario.getAttribute(\'name\') = '+document.formulario.getAttribute('name') );
        alert('document.formulario.getAttribute(\'name\').value = '+document.formulario.getAttribute('name').value );
        alert('document.formulario.getAttributeNode(\'name\').nodeValue = '+document.formulario.getAttributeNode('name').nodeValue );
    ">datos</button>
</form> 
    
  Resulta que en IE 
document.formulario.getAttribute("name") nos devuelve el campo (incorrectamente), y en FF el atributo (como debería ser). 
Sólo con getAttributeNode devuelven los dos el atributo. Con lo demás (
["name"] y 
.name) devuelven los dos el campo. 
Pero no recomendaría llamar 
name a un campo 

Para hallar el valor del atributo 
name del campo 
name habría que escribir algo tan feo como esto: 
document.formulario.name.name  
Un saludo.