Q:

Accepting an ERC20 Token as Payment

Assuming I have deployed my ERC20 token, and the supply has been dispersed, is there any method of creating a separate contract that accepts that ERC20 token as payment and has user fields that send particular information to the contract? 
Kind of like a contract that takes the token along with some information.

A:

If you want to receive ERC20 tokens onto a new contract along with data, you can create the new contract using ERC 223 token standard. Read here (Dont be confused about the nomenclature, its ERC223 and not ERC23)
When you transfer the tokens, you can also send data in the function
transfer(address to, uint value, bytes data)

And since ERC223 is backward compatible with ERC20, there will be no breaking in contract.
A sample function can be as
function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) {
    if (balanceOf(msg.sender) < _value) throw;
    balances[msg.sender] = safeSub(balanceOf(msg.sender), _value);
    balances[_to] = safeAdd(balanceOf(_to), _value);
    ContractReceiver reciever = ContractReceiver(_to);
    reciever.tokenFallback(msg.sender, _value, _data);
    Transfer(msg.sender, _to, _value, _data);
    StateChanged(true,"Transfer to contract successful");
    return true;
}

