How to create ECDSA keypair (256bit) for bitcoin curve (secp256k1) using spongy castle?

Your code is already sufficient, and specifying "secp256k1" already sets the correct size. The initialize(int, SecureRandom) method is an alternative to initialize(AlgorithmParameterSpec, SecureRandom); you call one or the other, not both. If you call the one specifying the keysize (say, 256), the BC provider will try to choose a default curve of the right size (for 256, it will be "prime256v1" a.k.a. "P-256" or "secp256r1").