Theoretically speaking, if you have the cooperation of 50% of the network (in terms of computational power), then you could remove 'in-appropriate' transactions. However, after you decide to remove them, their will be 2 versions of the block-chain until yours becomes longer than the original again. Obviously, this is never going to be attempted.
Unfourtuantly, there is theoretically no way to prevent people from coding arbitrary data into a transaction. Assume you do have a filtering mechanism. It seems obvious that at any point in the block chain, there is at least 2 legal, non-suspisious, transactions. Using just this, Alice can encode 1 bit of information by saying that the first legal transaction is a '0', and the second legal transaction is a '1'. Transactions can be ordered in a deterministic way (for example, look at them as a giant binary number and sort numerically).
The psuedo-anonomous nature of bitcoin means that attempting to filter spamming by the source would not work, as you cannot differentiate a new account that is part of a spam attack from a new account that spent at a bad time.