No hay forma directa de manipular la fuente de cada ítem por separado de manera que debes dibujarlos tú mismo poniendo la propiedad Style del ListBox en lbOwnerDrawFixed y dibujando el texto en el evento OnDrawItem:
Código Delphi
[-]
procedure TForm1.ListBox1DrawItem(
Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1.Canvas do
begin
FillRect(Rect);
if Terminada(Index) and not (odSelected in State) then
Font.Color := clGreen;
TextOut(Rect.Left + 2, Rect.Top, ListBox1.Items[Index])
end;
end;
Aquí Terminada vendría siendo una función que determine si la tarea está acabada. En tal caso, y suponiendo que el ítem no está seleccionado en esos momentos, le cambias el color. La última condición no es necesaria pero resulta un poco difícil leer un color que no sea blanco sobre el fondo azul de la selección.
Si quieres hacer algo más osado leete el ejemplo que viene en la ayuda de Delphi sobre el evento OnDrawItem para que veas que puedes incluso colocar bitmaps al lado del texto con lo cual obtendrías algo mucho mejor para indicar el estátus de la tarea.
// Saludos