Interesting question!
As far as I know (but I don't know everything!) there is no easy way to do this. The reason behind this is that Excel has a strange way of working with time and dates behind the scenes. Basically it boils down to the fact that a date/time is always seen by Excel as a decimal number , with 1 being 1st January 1900 or thereabouts. The fact that the cell shows something different is just the formatting, it doesn't actually store the information as a true date/time. Because of this you can easily add/subtract dates from eachother as for Excel this looks like 17538 - 17534. Time is now found in the part of the number behind the comma, so 1,5 is 12:00 on 1st January 1900.
This is were the problem with rounding arises: when you have 0:45 in a cell, Excel sees this as the decimal number 0,03. When rounding this it will always go to zero. 39:55 is seen by Excel as 1,66 (1 day plus 0,66 of a day), which rounds to 2, and is then shown as 48:00 as this means two days when formatted as [hh]:mm.
I've been trying to think of a way to work around this (might find the solution useful myself) and am working on a solution using the IF function. I just need to think of a way to compute the correct rounded figure! I'll see if I can get it sorted and post it here.