Completando un poco más:
Si no tienes multiselect a true, bastaría con:
Código Delphi
[-]
if listbox1.itemindex <> -1 then
listbox1.Delete(listbox1.itemindex);
Si multiselect es true, siempre recorre los índices en orden descendente:
Código Delphi
[-]
with Listbox1, Listbox1.Items do
for i:= Count -1 downto 0 do
if Selected[i] then Delete(i);
De memoria es así puede que tenga algún error.
Saludos