Diciamo che è un "ostacolo" solo per il fatto di essere presente. Può infatti "disorientare" il browser e l'utente, allo stesso modo in cui lo fanno le finestre popup (il focus si sposta dalla pagina attiva ad un'altra finestra o frame).

Per "passare i parametri" al CSS ti basta scrivere gli stili che ti interessano dinamicamente nella pagina (anziché in un file CSS separato). Ad es., supponendo di generare dinamicamente la pagina con PHP, potresti avere una pagina come questa:

codice:
..................
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="stile.css" media="screen" />
<style type="text/css">
<!--[CDATA[
<?php
$i = 6;
for ($n=1; $n<=$i; $n++) {
echo '#img'.$n.' {';
echo 'background-image: url(immagine'.$n.'.jpg);';
echo '}';
}
?>
]]-->
</style>
</head>
<body>
<?php
for ($n=1; $n<=$i; $n++) {
echo '<div id="img'.$n.'" class="preload"></div>';
}
?>
.............
Come vedi dal codice, il foglio di stile è esterno alla pagina, tranne le regole (che vengono stampate dinamicamente) che riguardano i tuoi elementi <div> con impostate le immagini di sfondo. Ti basta modificare il valore della variabile $i all'inizio e potrai inserire tutte le regole (e i relativi <div> a cui esse si riferiscono) che vuoi. Ovviamente, puoi migliorare il codice utilizzando delle funzioni, magari richiamandole da una classe PHP, ma questo sta a te deciderlo. Puoi ovviamente usare anche ASP o JavaScript al posto di PHP.