EDIT: scusa avevo capito male

Praticamente dove l'utente si logga o dove fai il controllo della sessione ti spari la funzione che aggiorna i dati dell'utente.

Codice PHP:
function controllaVip$utente )
{
    if( 
$utente[end]>date("Y-m-d H:i:s" time() ) )
        return 
false;
    return 
true;

Ovviamente e' solo un'idea che aprte dal presupposto che la data end sia in formato sql e cio' implica che puoi fare anche un controllo del genere che php vede come controllo lessicografico che e' possibile fare su tale tipo di date.
Senno basta che usi le timestamps e da data sql com mktime( ... ) ti genera la timestamp a partire da ora, minuti , secondi , mese , giorno , anno se nn ricordo male.

poi dove chiami la funzione fai il relativo update sulla tabella

if( $utente[vip]="true" && controllaVip( $utente ) )
//tutto ok
else
//fai l'update e downgrada l'utente.

p.s.
non mi ricordo come e' segnato il campo vip .... modificatelo in modo che il controllo sia corretto per i tuoi dati.