Per quanto riguarda array_walk(), l'errore è la mancanza del passaggio per riferimento dell'elemento dell'array (vedi http://www.php.net/array_walk).

Da come hai strutturato la tua tabella, dovrebbe bastarti un codice come questo:

Codice PHP:
$_POST['corsi'] = isset($_POST['corsi']) ? $_POST['corsi'] : array();
$_POST['corsi'] = is_array($_POST['corsi']) ? $_POST['corsi'] : array($_POST['corsi']);
$corsi implode(', '$_POST['corsi']);
$corsi mysql_real_escape_string($corsi);
$sql "UPDATE user_info SET .... corsi='{$corsi}' ...."
In ogni caso, la scelta di inserire in un campo dei valori multipli viola le regole di normalizzazione. Dovresti valutare la possibilità di creare una relazione molti a molti.