How do I get SQL Server agent to show up in SSMS for a non-sysadmin user? I have already mapped the user to the msdb database and assigned him the role of SQLAgentOperatorRole, but the user still can't see the SQL Server Agent listed when he connects. 

The SQL Server Agent does show up fine when I log in as a sysadmin.
There are several points to consider.


Make sure that person connecting to SQL Server 2012 is using SSMS 2012, I have seen compatibility issues when some features are not showing up when connecting with wrong version.
Remove all roles from the user and grant them again, go over these steps to make sure that you have done it correctly first time.


Script for creating account and assigning role:

USE [master] 
CREATE LOGIN SQlSATest WITH PASSWORD = 'test', CHECK_EXPIRATION=OFF, CHECK_POLICY= OFF; 
USE [msdb]
CREATE USER [SQLSATest] FROM LOGIN SQLSATest; 
EXECUTE sp_addrolemember @rolename = 'SQLAgentOperatorRole', @membername = 'SQLSATest'