If all of those map to a single controller and action, you can accomplish it like this:
routes.MapRoute("Default",
"{id}/{foo}/{bar}/{user}",
new { controller = "Home", action = "Index",
foo = String.Empty,
bar = String.Empty,
user = String.Empty });
And your Index action would look like:
public ActionResult Index(string id, string foo, string bar, string user) {}
If your intent is that each of those is a separate action, then consider that routes are matched in the order that they are added to the routing table. Therefore, always add the routes in order of most specific to broadest, and you'll be fine. So:
routes.MapRoute("Default",
"{id}/{foo}/{bar}/{user}",
new { controller = "Home", action = "FooBarUser" });
routes.MapRoute("Default",
"{id}/{foo}/{bar}/",
new { controller = "Home", action = "FooBar" });
routes.MapRoute("Default",
"{id}/{foo}/",
new { controller = "Home", action = "Foo" });