Create a formula field on User called Account_Id__c
. It is defined as Contact.AccountId
and is a field of Text type.
Create a formula field on the Contact with name Is_My_Contact__c
and define it to be
Checkbox
with formula
$User.Account_Id__c = AccountId /* is user's account same as contact's account */
Then change your listview filter to be simply Is_My_Contact__c = true
N.B. not tested; You may need to use CASESAFEID to ensure you are always comparing 18 character Ids
This gets around the issue you mentioned in your comment about $User.Contact.Account.Id
converting to $User.Id
after saving the formula