You only get the root node because you're only adding the root node. You can fix this by also adding the current node to the result from the recursion.
public static List<MvcSiteMapNode> BreadcrumbTrail(MvcSiteMapNode curr)
{
List<MvcSiteMapNode> t;
if (curr.ParentNode == null)
t = new List<MvcSiteMapNode>();
else
t = BreadcrumbTrail(curr.ParentNode as MvcSiteMapNode);
t.Add(curr);
return t;
}
should do what you're looking for