Heat oil over medium-low heat. Add onion and cook about 10 minutes. Add meat and cook, breaking up meat, until all liquid evaporates and meat is browned. Add tomato, thyme and cinnamon. Season to taste with salt and pepper. Cover and simmer 20 minutes, stirring occasionally.
Meanwhile, melt 3 tblsps butter in small saucepan over low heat. Add flour and stir 3 minutes. Pour in milk, increase heat to medium-high and stir until sauce boils and thickens. Remove from heat and whisk in egg. Place over medium heat and continue stirring 2 minutes. Season to taste with salt and pepper. Set aside.
Melt remaining 1 tblsp butter in small skillet over medium heat. Add pine nuts and stir until golden-brown.
Heat 2 tblsps olive oil in large skillet over medium-high heat.
Add garlic and sauté just until it begins to release its fragrance. Blend in spinach, cover and cook just until spinach is wilted, about 2 minutes. Season with nutmeg, salt and pepper.
Stir sauce, pine nuts and cheese into meat. Taste and adjust seasoning.
Let cool. (this can be prepared up to 1 day ahead and refrigerated until ready to use).
Preheat oven to 350F (175C). Lightly grease rimmed baking sheet.
Cover work surface with towel. Place 2 filo sheets on towel with long edge nearest you. Brush with melted butter. Repeat 4 more times, brushing each double layer with butter. Spread cooled meat mixture on filo, leaving 1 ½ inch border. Arrange spinach in lengthwise strip along center of meat. Using towel as aid, roll filo up lengthwise. Transfer, seam side down, to baking sheet. Brush butter over top.
Bake until crisp and golden, about 1 hour.
Let stand 10-15 minutes before slicing. (can be assembled ahead to this point and refrigerated overnight before baking).