Here are (overly) simplified answers:
- You signed your transaction with your (secret) private key, so that others can verify that signature using your public key which is in the transaction.
- Nodes verify that the coins you want to spend were previously sent to you.
And here are more details...
Most transactions (all those that transfer bitcoin -- that is, not those that create bitcoins) consist of a list of inputs and a list of outputs. The inputs refer to (unspent) outputs from previous transactions, and together constitute the whole value that is transferred. In addition to the amount for this particular output, each output specifies the conditions under which the output can be spent. The simplest condition is 'you own the address specified in the output'. Given that an address is the hash of a public key, what this condition actually means is that you know the private key for a public key that hashes to the given address.
In order to allow the nodes to check this condition, each input in a transaction is accompanied with the public key that hashes to the address to which this input was sent, and a signature of a simplified view of the transaction. This signature is created using the private key corresponding to this public key. The verifying node can build this same simplified view, and use the public key to verify that the signature is valid. This validates that you 'own' the address to which the coins were previously sent.
In order to be valid, a transaction must have enough inputs to cover all the outputs, and these inputs must refer to unspent outputs. That is, outputs from previous transactions that never appeared as input in any other transaction.
Note that nothing is encrypted, here. Everybody can see the source and destination addresses, as well as the amounts.
You will find more details in https://en.bitcoin.it/wiki/Transaction.