Preheat oven to 400°F. Wash sweet potatoes and prick with a knife. Arrange sweet potatoes on a baking sheet and bake for 1 to 1 1/4 hours, until tender. Meanwhile, make topping: Bring 1 inch of water to boil in a 3- to 4-quart saucepan. Add spinach a little at a time and cook, stirring, until wilted, about 3 minutes. Drain in a colander and rinse with cold water. Squeeze out as much liquid as possible. Transfer to a work surface, coarsely chop spinach and set aside.
Melt butter in a 9- or 10-inch nonstick skillet over medium heat. Add Canadian bacon and cook, stirring, until beginning to crisp, 4 to 5 minutes. Using a slotted spoon, transfer bacon to a plate. Add onion and salt to skillet and cook over mediumlow heat until golden, about 6 minutes. Add cream cheese and reserved spinach and cook over medium-low heat, stirring until smooth. Stir in Canadian bacon and season to taste with pepper.
Split hot sweet potatoes and fluff with a fork. Spoon spinach mixture on top; serve.