If you convert your make table query to a select query. you could just use this as the source for the crosstab which eliminates the need for a temp table, or you could just convert the second query into a crosstab query.
Code:
TRANSFORM Sum([Cost]+[Service Charge]) AS SumOfTotal
SELECT Employees.FirstName
FROM Employees INNER JOIN [Transaction] ON Employees.EmployeeID = Transaction.EmployeeID
WHERE (((Transaction.Date) Between [Forms]![PreReport]![startDate] And [Forms]![PreReport]![endDate]))
GROUP BY FirstName
PIVOT [Type];
Note that type is a reserved word, using it can have unexpected consequences, better to change the name to something else