You could create a shared filter or a "submitted form" decision step that feeds out of the campaign if your business need allows for long enough wait for the individual to get processed through the step. If it is a longer drawn out nurturing campaign you can add a nurturing brain that brings individuals into a campaign long enough to send an email then moves them back into a program that checks the logic. Logic being "did they finish the campaign" and "have the submitted a form". If the answer is no then they re-enter to get the next email, if the answer is yes to either question they would no go back into the campaign so they would be removed. Downfall to "submitted a form" removing from a campaign is you would really need a slightly more complex settings than just the basic submitted any form since some forms are less valuable like maybe a newsletter signup. Just a few thoughts. Not sure if any of that is helpful.
The simplest way to remove contacts from a campaign is to use a "Wait" step. Simply, add a "Wait" step that lasts for about "0.1" hrs after the decision step. After the "wait" period is expired, the contact will be removed from the campaign.
The above options will work and I have used these options in the past to remove contacts from campaigns. However, I have seen some large nurture campaigns, where putting a logic step to check a range of filters prior to each campaign action results in many hours of work to add them and then test everything is working as expected. As a result of this, we built an app to automate the removal of contacts from campaigns based an the same filter logic you would use to identify inactive contacts for example.
There is more information about the app on the Marketplace here. As an overview, the app will allow you to select which campaigns you wish contacts to be removed and place the app in a program canvas. Then you simply feed the program with the contacts you want removed - you can use what ever logic you want to feed to program. As a result it is just a single setup, rather than potentially adding 100s of "shared filter member" steps into large nurture campaigns.Depending on your needs, maybe this option will be more efficient for you.
I hope this helps.
4Thought Marketing - Marketing Automation Specialist