Nel file "visualizza.php"

Codice PHP:
echo "<tr><td>$idID</td> <td>$idnome</td> <td>$idcognome</td> <td>$idnick</td> <td>$idmail</td> <td>$idversione</td> <td>$idpreferito</td> <td>$idcontinua</td> <td>[url='admin.php?row=<?=$idriga?>&action=modifica']modifica[/url]</td> <td>[url='admin.php?row=<?=$idriga?>&action=cancella']cancella[/url]</td></tr>";
1° perchè utilizzi "<?php $idriga ?>" e non direttamente "$idriga"?
Sei già all'interno di una blocco di php, quindi non ti serve riaprire e chiuderlo.

2° "<a href='admin.php?row=<?=$idriga?>..."
la variabile $idriga dove viene inizializzata?

Nel file "admin.php" aggiungi la seguente riga in modo da controllare quali dati arrivano al tuo script:
Codice PHP:
<?php
$azione
=$_GET["action"];
$riga=$_GET["row"];
var_dump($_GET);  //Aggiungi Questa riga

if ($azione=='cancella'){
.....
Sicuramente al tuo script di cancellazione non arrivano i dati che tu prevedi.