Hola pato12,
 
En lugar de usar str_replace, te recomendaría usar unset para borrar el registro, por ejemplo: 
 Código PHP:
    session_start();
include('config.php');
$query = mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['login']."'") or die(mysql_error()); 
$data = mysql_fetch_array($query) or die(mysql_error()); 
$sep=explode(',',$data['favorito']);
for($i=0;$i<=(count($sep));$i++){
if($sep[$i]==$vid and $si_no=="no")
        unset( $sep[$i] );
}
echo implode( ",", $sep ); 
    
  Saludos.