This is not an answer, but, based on chuy's solution, I want to show someone of the advantages of the new V10 Inactive:
(x = Inner[Inactive[Times], {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}, Inactive[Plus]]) // MatrixForm 
Activate[x, Times] // MatrixForm 
Activate[x] // MatrixForm 