Peel the potatoes and cut them into ½-inch pieces. Then trim the dark green parts of the leeks you're left with the pale green and white ends. Thinly slice the leeks and then rinse them thoroughly. Pat dry with paper towels.
Bring a large pot of water to a boil. Add the potatoes and cook for 20-25 minutes, or until fork tender. Drain the potatoes and return them to the pot.
While the potatoes are boiling, melt the butter in a large skillet over medium heat. (see note) Add the leeks and cook for 5-7 minutes or until the leeks are tender and slightly caramelized around the edges. Add the garlic and cook for 30 seconds until fragrant, stirring constantly.
Add the cabbage to the leeks and stir to combine. Cook for another 6-8 minutes (stirring often), or until the cabbage has wilted and is tender. Reduce the heat to low and keep warm while you finish the potatoes.
Mash the cooked potatoes until all the lumps are gone. Pour in half of the cream and stir to combine. Add more cream as needed until your desired potato consistency is reached. Season with salt and pepper to taste.
Pour the veggies from the skillet into the pot of potatoes along with 3/4 of the crumbled bacon. Stir that all together. Check the seasoning and adjust with salt and pepper as needed.
Transfer the potatoes to a serving bowl. Top with a little more butter and let it melt into the potatoes. Sprinkle the potatoes with green onion and more crumbled bacon, if desired. Serve warm.
Notes
I like to leave the grease from cooking the bacon in the skillet and then add the butter to it for cooking the veggies.
If you prefer to leave the bacon out for a vegetarian colcannon, you absolutely can.