How do you keep slower units moving behind faster units while keeping them from getting separated?
Have your units meet up and wait for each other at various points along the way during your push, especially right before the attack so you can get in position. You just have to keep them together and tell them exactly where you want them to go. Xel'naga towers are good spots to rendezvous on your way over to the enemy as during that time period you get some extra vision which has saved me countless times when the enemy was also pushing as I was able to see them first and run my faster units back to my slower ones to intercept the enemy as a group. Even with all units of the same speed sending them straight into the enemy base in a line is going to cause trouble, you want to keep them all together.
Unlike in Blizzard's last RTS, Warcraft 3, there is no way to have your army move in "formation" with the whole group moving at the speed of the slowest unit.
It sounds like you're already trying to get around this with Micro -- which is exactly the answer to your question, unfortunately. There's no way around it.
It may help to group your different speed units into seperate control groups, however, such that you can command them individually to stop, retreat, etc.