Melt the butter in a large saucepan. Add the onion and potatoes and cook over a low heat, stirring frequently, for 5 minutes, without browning.
Stir in the flour, then gradually add the milk, stirring constantly. Bring to the boil, add the bay leaf and season to taste with salt and pepper. Add half the sweetcorn, cover the pan and simmer for 15–20 minutes.
Remove and discard the bay leaf and set the soup aside to cool slightly. Purée the soup in a blender or food processor or rub it through a sieve until smooth. Return it to the pan, add the remaining sweetcorn and heat through.
Stir in the cream, sprinkle over the bacon and serve the soup immediately.