Pour faire cuire les haricots : Les placer dans une casserole remplie d'eau jusqu'à 2 pouces au-dessus des haricots. Laisser tremper au moins 8 heures.
Égoutter les haricots et les remettre dans une casserole avec 8 tasses d'eau fraîche. Porter à ébullition, baisser le feu et laisser mijoter jusqu'à tendreté, de 30 à 45 minutes. Égoutter et réserver l'eau de cuisson. Ajouter suffisamment de bouillon de légumes pour obtenir 7 tasses de liquide.
Saler et poivrer généreusement le poisson sur les deux faces et le placer au réfrigérateur de 30 minutes à 2 heures. Le rincer à l'eau froide et le couper en cubes.
Dans une grande casserole, faire chauffer l'huile à feu moyen-doux et ajouter l'oignon. Faire cuire environ 10 minutes, ou jusqu'à tendreté. Augmenter le feu à moyen, ajouter les pommes de terre et la patate. Ajouter les haricots et le bouillon, porter à ébullition. Ajouter une pincée de poivre de Cayenne et bien mélanger.
Baisser le feu, couvrir et laisser mijoter environ 20 minutes ou jusqu'à ce que les pommes de terre et les patates soient cuites.
Ajouter le poisson et faire cuire jusqu'à ce que la chair se défasse facilement, environ 5 minutes. Ajouter les épinards et continuer la cuisson 2-3 minutes.
Servir la soupe dans des bols, accompagnée de quartiers de citron, si désiré.