dopo sort($images)...

Codice PHP:
// ... righe precedenti
sort($images); // questo può rimanere
$imgs = array(); $i 0$j 0;
foreach (
$images as $image) { // scorro le immagini
  
if (($image!='.')&&($image!='..')) { // se non sono le cartelle (si può anche mettere if (is_file($image)) che è più generico)
    
$imgs[$i][] = $image// memorizzo l'immagine in $imgs
    
$j++; if ($j%2==0$i++; // ogni due passi incremento l'indice di $imgs
  
};
};
foreach (
$imgs as $files) { 
                echo 
'<tr>'
               foreach (
$files as $file) {
            if ((
substr($file, -5) == ".jpeg") || (substr($file, -4) == ".jpg") || (substr($file, -5) == ".JPEG") || (substr($file, -4) == ".JPG") || (substr($file, -4) == ".png")) { 
                echo 
'<td>'
                echo 
'<input type="checkbox" name="check[]" value="$file" />'
                echo 
'</td>'
                echo 
'<td>'
                echo 
'[img]' $dirname $file '[/img]'
                echo 
'</td>'
                };
                echo 
'</tr>'
            } 
        } 
...non è la soluzione più "breve", ma è molto "chiara".... cmq da verificare (l'ho scritta senza testare nulla...)