Estamos falando do nome do site aqui. Na maioria dos casos, não será tão longo e geralmente será repetido várias vezes em cada página. Portanto, isso não deve ser problema para qualquer mecanismo de pesquisa, pois é difícil ver como isso pode enganar seus usuários. Isso não pode ser comparado aos casos em que alguém oculta várias palavras-chave que não são repetidas ou relevantes para o conteúdo.
No entanto, isso não significa que você deve fazê-lo.
Não sei por que faço, sempre fiz.
Agora é a hora de repensá-lo. Por que você faria algo assim? O logotipo é (ou representa ) o nome / título do site. Então, ele deve estar em h1. Dependendo do seu método de ocultação, o cabeçalho também pode estar oculto para os leitores de tela (o que pode interromper a navegação de contorno usada por muitos usuários do leitor de tela).
Se você deseja exibir o nome, o logotipo e o nome, coloque-os da mesma forma h1ou use o hgroupelemento HTML5 .
<!-- variant 1 -->
<h1><img src="acme-logo.png" alt="" />ACME Inc.</h1>
<!-- variant 2 -->
<hgroup>
<h1><img src="acme-logo.png" alt="" /></h1>
<h2>ACME Inc.</h2>
</hgroup>
Observe que o altvalor do atributo deve estar vazio aqui:
o altvalor do atributo não deve repetir as informações que já são fornecidas na prosa ao lado da imagem
Se você quiser usar apenas o logotipo, tudo bem:
<h1><img src="acme-logo.png" alt="ACME Inc." /></h1>
Em relação às outras respostas:
É totalmente bom e bom e, em muitos casos, até necessário (para o esboço do documento) para uso h1no título do site , não no título do conteúdo da página. No HTML5, você pode usar h1para ambos os títulos (em combinação com os elementos de corte).
Um método de substituição de imagem CSS não deve ser usado para o logotipo do site, pois é conteúdo (HTML), não decoração (CSS)