Over medium heat, melt butter in a sauté pan. Add onions and sauté until softened but not browned, about 7 minutes. Add salmon parts, potatoes, bay leaves, salt, and all but a few stalks of the dill. Add enough water to just cover the fish. Bring water to a steady simmer and cook until fish and potatoes are tender, about 20 minutes.
Using a slotted spoon, remove fish parts, dill, and bay leaves from the liquid. When the fish is cool enough to handle, separate the meat and other edible parts (eyeballs, cartilage, etc.) from the skeleton.
Add the picked meat, eyeballs, and other edible parts back to the soup. Reheat gently at a low simmer, taking care not to break up the fish meat. Add cream and chopped fresh dill. Add more salt, if needed, and freshly ground black pepper. Serve immediately. Leftovers may be kept in the refrigerator for up to 3 days and reheated over a low simmer.
