I'm sure this will be a slam dunk for someone... fingers crossed
My ListView ItemsSource is bound to a Property on my ViewModel named TileItems.
Populating the list view updates perfectly.
In the ViewModel, where you see "existingTileItem.Transaction = e.Transaction" . . . The individual listview item updates perfectly.
In the ViewModel, where you see "Me.TileItems.Remove(existingTileItem)" ... The item is not removed from the View. It does successfully remove from the Me.TileItems collection, but the update is not depicted in the View.
Additional Info: AbstractViewModel implements INotificationPropertyChanged, I've tried overriding Equals in the TileItem and not overriding it, and the same results all around happen. I have seen this answer and this answer, but they do not answer the issue I am having.
XAML:
<UserControl.DataContext>
    <local:TransactionTileResultsViewControlViewModel />
</UserControl.DataContext>
<ListView Grid.Row="1"  Name="tileItems" ItemsSource="{Binding TileItems, Mode=TwoWay}" 
                  ItemTemplate="{StaticResource tileItemDataTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Hidden"
                  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
ViewModel:
Public Class TransactionTileResultsViewControlViewModel
    Inherits AbstractViewModel
    Implements INavigationAware
    Private _tileItems As TileItems
    Public Property TileItems As TileItems
        Get
            Return Me._tileItems
        End Get
        Set(value As TileItems)
            Me._tileItems = value
            MyBase.RaisePropertyChanged("TileItems")
        End Set
    End Property
'....
    #Region "TransactionUpdateReceived Methods"
        Private Sub TransactionUpdateReceived_Handler(ByVal e As TransactionUpdatedEvent)
            If e.Transaction IsNot Nothing Then
                Dim existingTileItem As TileItem = Me.TileItems.Where(Function(t) t.Transaction.TransactionQueueID = e.Transaction.TransactionQueueID).FirstOrDefault()
                If existingTileItem IsNot Nothing Then
                    If e.Transaction.Canceled Then
                          Me.TileItems.Remove(existingTileItem)
                    Else
                        If e.Transaction.ContainsFailedActivites() OrElse e.Transaction.ContainsCallbackActivities() Then
                            existingTileItem.Transaction = e.Transaction
                        Else
                            Me.TileItems.Remove(existingTileItem)
                        End If
                    End If
                End If
            End If
        End Sub
#End Region
End Class
TileItems Model:
Public Class TileItems
    Inherits ObservableCollection(Of TileItem)
End Class
TileItem Model:
 Imports Microsoft.Practices.Prism.ViewModel
    Public Class TileItem
        Inherits NotificationObject
        Private _created As Date
        Public Property Created As Date
            Get
                Return _created
            End Get
            Set(value As Date)
                _created = value
                MyBase.RaisePropertyChanged("Created")
            End Set
        End Property
        Private _category As String
        Public Property Category As String
            Get
                Return _category
            End Get
            Set(value As String)
                _category = value
                MyBase.RaisePropertyChanged("Category")
            End Set
        End Property
        Private _tileField1 As String
        Public Property TileField1 As String
            Get
                Return _tileField1
            End Get
            Set(value As String)
                _tileField1 = value
                MyBase.RaisePropertyChanged("TileField1")
            End Set
        End Property
        Private _tileField2 As String
        Public Property TileField2 As String
            Get
                Return _tileField2
            End Get
            Set(value As String)
                _tileField2 = value
                MyBase.RaisePropertyChanged("TileField2")
            End Set
        End Property
        Private _tileField3 As String
        Public Property TileField3 As String
            Get
                Return _tileField3
            End Get
            Set(value As String)
                _tileField3 = value
                MyBase.RaisePropertyChanged("TileField3")
            End Set
        End Property
        Private _transaction As Transaction
        Public Property Transaction As Transaction
            Get
                Return _transaction
            End Get
            Set(value As Transaction)
                _transaction = value
                MyBase.RaisePropertyChanged("Transaction")
            End Set
        End Property
    Public Overrides Function Equals(obj As Object) As Boolean
        If TypeOf obj Is TileItem Then
            Dim tileItem As TileItem = DirectCast(obj, TileItem)
            If tileItem.Transaction IsNot Nothing AndAlso Me.Transaction IsNot Nothing Then
                Return tileItem.Transaction.TransactionQueueID = Me.Transaction.TransactionQueueID
            Else
                Return False
            End If
        Else
            Return False
        End If
    End Function
    End Class
UPDATE:
Per @ReedCopsey 's answer, here is the update I made to get this working.
I updated Me.TileItems.Remove(existingTileItem) to be this now
Me.View.Dispatcher.Invoke(Sub()
                              Me.TileItems.Remove(existingTileItem)
                          End Sub, DispatcherPriority.ApplicationIdle)