ho sentito in giro (tramite amici locali) che forse l'integrazione di AJAX con php e mysql potrebbe essere utile
Per fare ciò che hai descritto mi sembra l'unica buona soluzione: metti un evento AJAX temporizzato con javascript che ti aggiorni la parte dove mostri la "lista della spesa". Se sei pratico di PHP e poco di javascript (e non hai pretese enormi) ti consiglio questa classe http://www.xajaxproject.org/.

Sul secondo quesito potresti fare uno script lato server da far eseguire (se hai un hosting linux) dal CronTab: ad esempio potresti considerare "chiuse" tutte le sessioni aperte da più di un'ora. Questo ti evita di ricorrere a trucchetti lato client e tutti problemi relativi a chiusura della finestra senza disconnessione.