Verify if user has read access to a table
To check for a specific effective permission on a securable, use HAS_PERMS_BY_NAME*.

For example, to show if the current security context has SELECT permission on the Production.Product table in the AdventureWorks sample database:

SELECT 
    HAS_PERMS_BY_NAME
    (
        N'Production.Product', 
        N'OBJECT', 
        N'SELECT'
    );


Related: To list effective permissions on a securable, use sys.fn_my_permissions:

SELECT
    P.[entity_name],
    P.subentity_name,
    P.[permission_name]
FROM sys.fn_my_permissions
    (
        N'Production.Product', 
        N'OBJECT'
    ) AS P
ORDER BY
    P.subentity_name,
    P.[permission_name];


* The built-in function takes everything into account. SQL Server has to know how to correctly determine effective permissions. This function exposes that ability.