As you've discovered, Transaction Description is just a description to yourself ro remind you what the transaction was for.
The bitcoin protocol doesn't have any space reserved specifically for storing any additional information with the transaction in the blockchain. In the actual blockchain a transaction is ONLY:
- 4 bytes of version number
- 1 to 9 bytes indicating the number of inputs
- A list of the inputs that supply value to the transaction
- 1 to 9 bytes indicating the number of outputs
- A list of the outputs that encumber value with requirements that must be met in order to use that value in future inputs
- A 4 byte lock-time
When people want to store non-transaction data in the blockchain, what they typically do is store it in one (or more) of the transaction outputs.
Perhaps one of the best ways to do this is to create a transaction using the OP_RETURN script code. Most wallets are designed for sending and receiving bitcoins, so they don't have a process for this built in to them. As such, you would have to either create the transaction by hand or write your own software to do so.
There are a few people that have already created programs to do this and made the service available via websites that they've created. Typically these websites will accept some data and some bitcoins and will then structure and broadcast the transaction for you.