Блин, ну ты даешь... ты заменяешь значение тестбокса модифицированным ('f' на 'а') значением переменной sInput, потом ты зачем-то берешь опять исходное значение (sInput) и модифицировав его другим способом ('s' на 'ы) опять заменяешь ним текстбокс, третий раз тоже самое только 'v' на 'м'. Зачем ты каждый раз берешь старое исходное не измененное значение теряя при этом изменения сделанные функцией Replace? Перестань это делать, в место нее пихай в функцию измененное за предидущий раз значение. Для этого либо сохраняй значения в sInput, а потом заноси ее значение в текстбокс либо вместо текстбокса в параметрах функции используй опять же sInput.
sInput = txtInput.Text
txtOutput.Text = Replace(sInput, "f", "а")
txtOutput.Text = Replace(txtOutput.Text, "s", "ы")
txtOutput.Text = Replace(txtOutput.Text, "v", "м")
либо
sInput = txtInput.Text
sInput = Replace(sInput, "f", "а")
sInput = Replace(sInput, "s", "ы")
txtOutput.Text = Replace(sInput, "v", "м")