Trim the leeks, cutting off and reserving the leaves. Slice the leek bulbs and add to the sliced onions.
In a large heavy skillet, heat the olive oil. Add the butter and wait until it foams and begins to turn nutty brown. Add the onions and leeks and cook over a high heat until the onions are brown. Add the beer and heat until the liquid reduces by half. Add the stock and simmer for 6 to 8 minutes. Season with salt and pepper.
Ladle half the soup, a little at a time, into a blender and puree. Combine the pureed soup with the simmered soup.
Cut the leek leaves into thin ribbons and stir into the soup. Ladle into bowls, top with bread and generous amounts of shaved cheese.