You can use SOQL like bellow to get list of Accounts with which the record has been shared and the Cause(Rule, Manual etc).
SELECT ID, AccountId , IsDeleted, RowCause FROM AccountShare WHERE UserOrGroupId='???????'
You can repeat this for all custom and standard objects and you can get the list of objects itself from following query.
To add to @mohithshrivastava's answer
Let's say you have OWD:
Activity T added to a Case C with parent Account A
Case C is owned by User U
Group G includes User V
All Accounts are shared to Group G
No cases are shared to Group G
User V, although they can see Account A ...
Can not see the ...
Given you have a picklist field ...
If your criteria requires use of a picklist field, you can only use equals/not equals.
Using a formula field won't help (i.e. TEXT(MyPicklist__c)) as criteria can't be used against a formula
You'll need to use a trigger or process automation to set a shadow text field that is synchronized to the picklist value to be able ...
Record sharing features in salesforce (namely, role hierarchy, sharing rules & manual sharing), facilitate opening up more access, but not restricting access. So, assuming that your problem is related to creating contacts from account related lists (or specifying account lookup while creating new contact), your best bet would be to write an apex trigger ...