Ma che senso ha usare i CSS esterni per poi sporcare comunque l'HTML con gli attributi di stile? Proviamo a ripulirlo un po' e a riassumerlo ai fini del forum (hai aggiunto molte porzioni inutili che distolgono l'attenzione a chi deve aiutarti):
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it"> 

<head> 
   <title>Media Sport</title>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
   <link href="design2.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 
   <div id="wrapper"> 
      <div>
         <span></span>
         [img]header.png[/img]
      </div> 
      <div id="mainphoto"></div> 
      <div id="nav">
         <span>
            <span></span>
         </span>
      </div> 
      <div id="shadow"></div> 
      <div id="col1"> 
         <div id="col1content">
            <span></span>
            <span></span> 
            

</p>
         </div> 
      </div> 
      <div id="col2">
         <div id="col2content">
            

</p>
         </div>
      </div> 
      <div id="footer">
         

</p>
      </div> 
   </div> 
</body></html>
Adesso dovrebbe essere validato. Ti faccio notare come tu abbia semplicemente dimenticato di inserire le informazioni inerenti la lingua del documento, attributi che ho evidenziato nel codice.

Sintetizzare e scrivere in maniera ordinata il codice aiuta in primo luogo ad analizzare in modo più approfondito il proprio lavoro e poi permette un'autocritica prima di venire a postare sul forum: sono convinto che se tutti si concentrassero di più su questo punto molti scoverebbero l'errore da sè.

E sarebbe tutto di guadagnato, ovviamente.