I've added a new function to my PowerShell Script Profile called Select-SPListItem. Usually you have to select the SPListItem's columns via the indexer like $item['Title']. This approach doesn't work great with built in cmdlets like select-object, group-object, sort-object, nor with tools like PowerGadgets (out-chart :-). The idea was to built a function similar to select-object, see below. Yo can use it like this:
$list.Items | Select-SPListItem Title, TaskStatus | group-by TaskStatus
Another way to work more elegant with SPListItems is using the SPListItemCollection.GetDataTable() method.
$list.Items.GetDataTable() | group-by TaskStatus
The downside of this approach could be that it allocates more memory, usually that doesn't matter. I've found this approach on Jesper M. Christensen's blog - thanks.