No conozco el lenguaje de programación C#, pero a simple vista parece que lo que tienes mal es esto:
"SELECT *FROM usuarios WHERE password=SHA1(password)=@contrasena and (nombre_usuario=@nom) LIMIT 0, 1";
Creo que deberías de ponerlo así:
"SELECT * FROM usuarios WHERE password=SHA1('@contrasena') AND nombre_usuario='@nom' LIMIT 0, 1";
No se si será necesario acotar con comillas simples las variables ya que son strings y puede que tengan espacios, comas y demás caracteres extraños. Si con las comillas simples no te va, prueba sin ellas.
Ten en cuenta que en la validación de nombre que haces en esa select estás distinguiento entre mayúsculas y minúsculas.
Espero que te sirva.