Hi,
Have you though about using a pathfinding system? this kind of behaviour are the job of such framework. and you will gain a lot of potential useful feature as your game will evolve, for example obstacle avoidance, retargeting.
Do you have unity pro or indie?
Is your target moving or fixed?
to do that manually:
the way you describe it is very much the way it's going to be design in the fsm. So you have three states, "accelerate", "cruise", "decelerate". I would however inject a state before that that turn the ship towards its target. so
"TURN"
"ACCELERATE"
"CRUISE"
"DECELERATE"
upon a global transition "MOVE BOAT" or something, get the direction of the boat etc etc and enter the state "ACCELERATE", in that state you move your boat at an increasing speed, in the same state you record the distance it traveled, and it move to the next state "CRUISE" once it reached a certain distance, and so on.
to mimic acceleration and deceleration, use the "translate" action and increase or decrease the value you inject in there using "float interpolate".
To detect the travelled distance, you can check the distance remaining towards the target or the distanced travelled from the start point using "get distance" action.
be aware that some initial check up would be required, if for example your target is closer than the acceleration and deceleration range, then you will have to accomodate for this for a realistic behaviour.
All in all, this kind of behaviour is quite a complex task to tackle, so be patient with this.
bye,
Jean