You can remove contacts from Journeys using:
Remove contacts from a Journey using ejection
You can learn about ejection here.
Remove contacts from a Journey using conditions
Every condition has different outcomes (i.e. paths out of the condition). If the contact doesn't satisfy one of those outcomes, then they'll stop on the condition and will end their Journey.
For example, let's take the Has Submitted Form condition. It has two outcomes, "Has Submitted" and "Has Not Submitted":
Let's say you want to send a follow email, but only to contacts that didn't complete your registration form. You could use the following Journey:
In the above example any contact who has completed the form would end their Journey on the condition, since the only path out of the condition is the "Has Not" path.
You can use the above logic with any other condition. For example, another common use case is removing contacts from a Journey that have opened an email in a sequence of emails; the goal being to only follow up those that didn't open the first email. You can do this using the Check Email Status condition:
You could use a similar structure to remove contacts that have replied to an email: