Thanks for all the great answers.
Yes, you can create a valid address without a private key, but you won't be able to spend from it.
Yes, that's what I want. Just for experimentation. I want to destroy bitcoins without loosing the private key (that would be too easy), so I need an adress nobody has the priv key.
I don't know why you'd want to conduct such an experiment, but to achieve your goal, you do not need to read about ECDSA.
You do it like this:
1.
Pick up any random 20 bytes (e.g 112233445566778899AA112233445566778899AA) and put the version byte (00), in front of it:
00112233445566778899AA112233445566778899AA
2.
Calculate the check sum - run sha256 over the 21 bytes and then again over the result:
echo "00112233445566778899AA112233445566778899AA" | xxd -p -r | openssl sha256 -binary | openssl sha256
This will give you the double sha256 of the 21 byes:
c1255966acaa9359140af8c13bce4c5639481f73a3ed7fde097d596e7cb102c9
The first 4 bytes (c1255966) is the checksum you need - just append it at the end of your previous 21:
00112233445566778899AA112233445566778899AAc1255966
3.
Use any base58 encoder to convert these 25 bytes (that represent a 200-bit big integer, MSB encoded) into a string.
For instance, you can do it with such a simple python script:
http://codepad.org/mVzFVQpu (put the hex-encoded 25 bytes in the first line)
Executing the script above will output the base58 encoded string - that is a valid bitcoin address, for which most likely nobody knows a private key.
You can repeat this procedure for any random 20 bytes you can think of.
A chance of someone having a private key for 20 bytes that you'd choose randomly is always bigger than zero, but astronomically low.
In theory there is no single address that would not refer to a specific private key.
That's because the hash in the address is 200 bits long while a private key is 256-bits.
So statistically for each valid bitcoin address there are 2^56 matching private keys.