Puedes hacer una inicialización de la variable:
Código PHP:
if(!isset($_SESSION['carrito'])){
$_SESSION['carrito'] = array();
}
O sea, si no existe la variable (pasa la primera vez que se ejecuta), la inicializa en un array vacío.
De esa manera el foreach lo reconocerá como array y desaparecerá el error.
Saludos