Yes. If it were not for Step 4, this mechanism would be robust in terms of filtering the specific items it is designed to block. However, because your input is decoded after the filtering steps have been performed, you can simply URL-encode selected characters in your payload to evade the filter:
Code
%22>%3cscript>alert(%22foo%22)</script>
If Step 4 were performed first (or even not at all) then this bypass would not be possible.