Cook the squash: Place squash cubes in a saucepan with enough water to cover. Simmer until tender, about 15 minutes. Drain well, then mash or purée until smooth.
Infuse the milk: In another saucepan, heat milk with the onion slices until just scalded (steaming but not boiling). Remove onion and discard.
Make the base: In a large soup pot, melt butter over medium heat. Stir in flour to make a roux, cooking for 1–2 minutes until bubbly but not browned. Gradually whisk in the hot milk until smooth and slightly thickened.
Combine: Stir in the puréed squash. Season with salt, celery salt, nutmeg, and black pepper. Simmer gently for 10 minutes, stirring occasionally.
Finish: Ladle soup into bowls. Drizzle each with 1–2 teaspoons of heavy cream and use a knife or toothpick to swirl into a delicate pattern. Serve hot with crusty bread.