EDIT: Sorry, I missed the part that the customer doesn't want to navigate to the Ribbon. Yes, in that case the best thing would be HTML+JS.
A better way would be to have a custom action with code behind which would create buttons dynamically based on available content types in that list.
Basically, you start with a custom action:
(Change RegistrationId to your list template id and ControllClass to your custom class).
Add a class which inherits a "Control" class. Then you handle the OnLoad event of the custom action:
protected override void OnLoad(EventArgs e)
this.Visible = false;
SPRibbon ribbon = SPRibbon.GetCurrent(this.Page);
AddNewButtons should check the content types used in that list and generate Ribbon buttons programmatically. Take a look at this article - http://www.sharepointnutsandbolts.com/2010/01/customizing-ribbon-part-1-creating-tabs.html for more information.
This guys here: http://www.projectserver2010blog.com/2010/01/sharepoint-2010-ribbon-customization.html has a decent article as well as an example code.