Heat butter with the oil in a large saucepan over medium-low heat. Add the onion; cook 1 minute. Stir in the leeks, shallot and garlic. Reduce the heat to low and cook, covered, for 30 minutes.
Add the bulgur wheat to the onion mixture, tossing to coat the grains. Add the stock and heat to boiling. Reduce the heat and cook, covered, over low heat until the bulgur is tender and all liquid has been absorbed, 20 to 25 minutes. Turn off the heat and toss in the parsley. Let the mixture stand, covered, 10 minutes. Then season with salt and pepper, fluffing the bulgur wheat with a fork. Sprinkle with the Parmesan cheese. Serves 4.