potrebbe essere un errore dovuto al fatto che quando elimini una riga dalla list NON si aggiornano gli estremi del ciclo for e quindi, essendo diminuito il numero di righe nella lista, gli ultimi indici non esistono. Potresti provare "invertendo" il ciclo

codice:
For i = lstCategorie.ListCount - 1 downTo 0
    If lstCategorie.Selected(i) = True Then
        qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
        RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
        lstCategorie.RemoveItem (lstCategorie.ListIndex)
        RsRimozione.Delete
        RsRimozione.Update
        RsRimozione.Close
        Exit For
    End If
Next i