Por partes.
Base de datos. Se supone que en la tabla productos debes incluir el idcat al que pertenecen, quedando:
 idcat ( ID de la categoría) y nombrecat (Nombre de la categoría)
 id, idcat, imagen, nombre, descripcion, precio, cuanto_hay, fecha. 
En el enlace, es mejor que uses el idcat de la categoría, ya que si los nombres de las categorías contienen, eñes, tildes... y demás caracteres 'extraños', es posible que no funcione. Quedaría:   
Código PHP:
Ver original- <?php 
- $consultaCategorias = mysql_query("SELECT idcat, nombrecat FROM categorias"); 
- echo "<td><a href='index.php?categorias=$categorias[idcat]'>$categorias[nombrecat]</a></td>"; 
- } 
- ?> 
Cuando recibes los datos, buscas que el producto pertenezca a idcat. Ten en cuenta que en el enlace has puesto como variable GET 'categoria
s'  y sin embargo en la recepción compruebas el GET 'categoria'. Quedaría:    
Código PHP:
Ver original- <?php 
- if(isset($_GET["categorias"])){ 
- $consulta = mysql_query("SELECT categorias.nombrecat, productos.nombre FROM categorias LEFT JOIN productos ON categorias.idcat = productos.idcat WHERE categorias.idcat = '".$_GET[- categorias ]."'");
 
- echo "<table>"; 
- echo"<tr><td>$producto[nombre]</td>$producto[nombrecat]<td></tr>"; 
- } 
- echo "</table>"; 
- } 
- ?>