State Machine for Character
I think that you have an issue with general approach you have chosen. StateManager can still be improved tho.


Use better and consistent naming. Why _onCompletion but _nextOnComplete? Why _nextState, but _lastState (shouldn't it be "previous"?)? Why ChangeState() when it doesnt change the current state, but sets the next state instead (i'm not sure i understand why it changes last state as well)? What IsCompleted() does? Does it actually checks for completion (then the name is fine) or does it retrieves the result of operation (then it could use a better naming)? Looks like it is the latter. It should be a property either way. Minor stuff like that improves code readability by a lot.
Delegates are clearly coupled with states, so, if for some reason you can not refactor them into events of IState, you can implemet some aggregator-object:

private class StateInfo
{
    public IState State { get; set; }
    public StateCompletion OnExecuted { get; set; }
}


and then instead of 

_onCompletion = _nextOnComplete;
_currentState = _nextState;


use _currentStateInfo = _nextStateInfo. This will reduce the number of fields and assignments.
I dont see an issue with _currentState.CheckStateModifiers();. Repeated code should be dealt with by extracting common logic to the base class (StateBase?).
I'm not sure _currentState.Enter (state entering object) makes much sense. Shouldn't object enter state and not vice versa?


It's hard to tell more without knowing implementation details and the logic you need to implement.