もしも + [verb た-form] + ら もしも + [i-adj 〜い → 〜かったら] もしも + [noun] / [na-adj] + だったら もしも + [verb (plain)] / [i-adj] + なら もしも + [noun] / [na-adj] + なら もしも + [verb (ば-form)] もしも + [verb て-form] + も もしも + [i-adj 〜い → 〜くて] + も もしも + [noun] / [na-adj] + でも
もしも is a stronger もし, "if" or "supposing". It stands at the head of a conditional clause and marks the situation as imagined – unlikely, a worst case, or not true at all. Like もし, it does not make the condition by itself: the clause still ends in 〜~たら, 〜~なら, 〜~ば or 〜~ても.
On its own, ~たら also means "when" for something that is sure to happen. もしも leaves only "if", so it cannot go with something certain.
This is the ending もしも meets most often. A verb takes its た-form plus ら, an い-adjective becomes 〜かったら, and a noun or な-adjective takes だったら.
"What would you do if…?" is the question this ending is made for.
With なら, "if that is the case": a supposed fact, a plan, a state. なら follows the plain form of a verb or an い-adjective, and a noun or な-adjective directly, with no だ.
A verb or an い-adjective goes into its ば-form: 〜えば for a verb, 〜ければ for an い-adjective. ば suits a state – ある, an adjective, a potential verb. When the first half is an action and the second half asks for something, use たら instead.
With ~ても the condition becomes "even if": whatever happens, the second half still holds. A verb goes into the て-form plus も, an い-adjective into 〜くても, and a noun or な-adjective takes でも.
Both go with the same endings, and もし is the everyday one. もしも leans harder on the "suppose": a dream, a worst case, a thought experiment.
These go beyond a plain supposition.
With たら or なら, もしも can set up a situation contrary to fact. English switches to "were" or "had"; Japanese keeps the same ending for the present, and a past one usually takes ~ていたら. The second half often ends in のに or だろう.
もしも also works as a noun for an emergency or something bad happening: もしものとき "in an emergency", もしものことがあったら "if anything happens".