Creo que quedaría mejor si pones el return en el lugar del break y más que nada es por varios motivos, pero uno bastante claro.
Si no se encuentra ninguno chekeado, retorna el valor del último y lógicamente eso no es correcto.
function valor_radio(radios)
{
var total = document.getElementsByName(radios).length;
for( i=0 ; i < total ; i++ )
{
if ( document.getElementsByName(radios)[i].checked )
return document.getElementsByName(radios)[i].value;
}
return false;
}
Como buenas costumbres, lo mejor es guardar el valor de un objeto en una variable si se va a utilizar en un bucle, así ahorraremos un tanto en memoria.
Si se encuentra, se retorna el valor, pero si no se encuentra, se retorna false. Así sobraría con llamar a la función dentro de un if (por ejemplo)...
if( valor = valor_radio(radios) )
{
//lo que pasaría si se ha seleccionado
// ya tenemos el valor del campo en la variable valor
}
else
{
//lo que pasaría si no se ha seleccionado
}