As geekosaur's answer says, time prints to stderr, and your command prints to stdout. And time waits for your command to finish before writing its output. I think you should try the program sponge from the package moreutils, like this:
/usr/bin/time -f "%e: " echo test | sponge
Sponge is a program which soaks up all the input and writes it when the input is closed (i.e. the previous program terminates). The above works because time will print to stderr when echo finishes, and echo's stdout will be soaked up by the sponge, which will only wring itself out when the left hand side finishes. So this does pretty much what you want as far as I can tell, though I wasn't able to test it for complete accuracy because my system's /usr/bin/time doesn't support the -f option.