Heat the butter and oil in a large heavy-based saucepan, add the onion and fry gently for 5 minutes, until softened but not browned. Add the potato and fry for a further 5 minutes, stirring, until lightly browned.
Stir in the milk, stock cube, bay leaves, nutmeg and salt and pepper to taste. Add the haddock and bring to the boil, then cover the pan and simmer for 10 minutes until the haddock is cooked and flakes easily.
Lift the haddock out of the pan on to a plate, peel off the skin and flake the flesh into pieces, carefully removing any bones, then set aside.
Add the spinach to the pan and cook for 2–3 minutes, until tender. Return the haddock to the pan and reheat.
Garnish the soup with the bacon, if using, and serve with crusty bread.