Secure way to transfer data over NFC?
There is not much special about near field communication here - it is just like any insecure transport medium, which can be evesdropped on (with external antennas up to several meters in distance).

Because of the low distance limit, there is no way for a man-in-the-middle attack if you (the human operator) are sure that your device is communicating with the right reader, but there is the relaying attack (your blackberry communicates to a reader, which forwards the data to another device which communicates to the real reader), which also might including the replay problem.

I would recommend not to build a new protocol (especially if you are new to cryptography), but to reuse existing, generally known, protocols. In this case, the usual TLS (Transport Layer Security) protocol seems like a good fit, if you can provide your "server" with a private key which is kept secret, and whose corresponding public key could be certified by some certificate agency whose key (or root key of some chain) would be known to the "client".

In the usual way of SSL/TLS operating, client and server negotiate a shared secret, from which the session keys are then derived.

(I suppose it would be easier to let the Blackberry be the client and your windows machine the server, but it would work the other way around, too.)

I don't know anything about Blackberry programming (nor .NET), but I suppose that there are SSL/TLS libraries available for both.

Note that while this avoids replay attacks (the keys are individually creating depending for each session, and won't work later), this doesn't really help against the relaying attack - so make sure to only transmit your payment details to sellers you trust.