You can do what you want in SoQL, but you're going to have to do that in two steps.
Because Acc->Conctact->User goes "down" in hierarchy and Custom ->Account goes "up", you won't be able to get them together in the same query.
Here is a way to do it:
Id accountId = [select Contact.AccountId from User where Id = :UserInfo.getUserID()].Contact.AccountId;
List<Custom__c> custObj = [select Id from Custom__c where Account__c = :accountId];
As Rahul suggested below
List<Custom__c> custObj = [select Id
where Account__c in (SELECT Contact.AccountId
WHERE Id = :UserInfo.getUserId())];
should also work (did not get a chance to test it), though the IN clause makes the query less performant... which may not be a problem in your case.