Soak the beans for four hours (or overnight) in a bowl of cold water, then drain thoroughly in a colander.
Roughly chop the onion, celery and carrots. Peel and chop the garlic.
Heat the oil over a low heat in a large, heavy-based pan with a lid. Add the onions, carrots, celery, garlic and bouquet garni. Add the lardons.
Place the lid on the pan and sweat, covered, on a low heat, for 10-15 minutes until the vegetables are juicy and tender.
Add the beans and enough water to cover by about 8cm/3in. Don't add salt or anything acidic at this stage or the beans won't soften as they cook.
Bring up to the boil and boil hard for ten minutes, then reduce the heat and simmer gently, covered, until the beans are very tender - this will take about 50 minutes to 1 hour 15 minutes, depending on the age and type of bean.
When the beans are tender, add the tomato, cumin, oregano, salt and freshly ground black pepper and sherry. Juice the lime and add the juice.
Simmer for another 30 minutes, stirring occasionally with a wooden spoon and crushing some of the beans against the side of the pan, until you have a thick soup, studded with whole beans. (You can use a hand-held blender if you like a thicker soup.)
At the end of cooking, remove the bouquet garni. Add more salt and freshly ground black pepper to taste, remembering that starchy beans appreciate plenty of salt. (The soup can be prepared in advance up to this stage, then reheated on the same day.)
To serve, put all the serving ingredients into small bowls and arrange them in the centre of the table. (Dice the avocado just before serving the soup.) Ladle the hot soup into bowls and pass around, encouraging people to help themselves from the selection of garnishes in the bowls.