Soak beans in cold water to cover, overnight (8 to12 hours). Drain beans and rinse well.
In a large stockpot or Dutch oven, heat the olive oil over medium-high heat. Add the sausage and saute for 5 to 6 minutes, or until browned. Remove the sausage from the skillet and reserve. Add the onions and cook 2 to 3 minutes, stirring occasionally. Add the garlic and cook, stirring, an additional minute.
Add the browned sausage back to the stockpot. Stir in the beans, bay leaves, and thyme. Add the chicken stock, water, salt, pepper, and cayenne. Bring soup to a boil; reduce heat to a simmer and cook, partially covered for 2 1/2 to 3 hours, stirring occasionally. Skim off any fat, as necessary, if desired. (The cook time may vary depending on the beans, but they should be tender and falling apart when finished.)
Adjust seasonings with salt and pepper, if needed. Using a potato masher or the flat side of a spoon, gently mash the beans against the bottom and sides of the stockpot, leaving some of the beans whole and some mashed. Continue to simmer the soup for 30 minutes, uncovered, or until desired consistency.
Ladle the soup into bowls. Serve hot, with crusty bread slices.