When I first started playing Minecraft, it was available for free. You did need an account, but the download was free. The only limitation is that you could only play in Demo mode. Demo mode limited you to playing survival (no creative), and you had a time limit. After that limit was over, your only options were to quit, or reset the game and lose your progress.
Since then, I have bought the game, and am glad I have. It's one of the best games I've ever played.
However, while I already have a paid account, I wanted to see what a modern free Mojang account is like, so I went to mail.com and got a free email account and used that email address to create a new Mojang account on minecraft.net. I have not purchased Minecraft on this new account. I wanted to test out the Demo mode of the latest version of Minecraft, to see if it is more or less permissive than the Demo mode of older versions of Minecraft. I was also curious if the launcher itself had any restrictions based on the fact I hadn't paid yet in this new account (such as preventing one from selecting and playing any version of Minecraft that didn't have a demo version, like the old alpha versions, so as to prevent playing a full version for free).
However, I discovered something quite unfortunate. It won't even allow me to download the launcher itself, unless I pay for it. This has MAJOR implications for anybody who has not yet bought Minecraft. It means they won't even get a chance to try the game before they buy it. They'll be forced to either not buy it, or buy a game that they know nothing about.
So I'm wondering, am I just missing something? Is there maybe some button or link on the minecraft.net website that I somehow overlooked? Maybe a button that would let you download the launcher for free?
Nevermind. I just discovered it is STILL POSSIBLE to get the launcher for free and play the demo version. It's just that the download link is a bit hidden. Here's how to do it.
After creating your free Mojang account on minecraft.net, do not click the download button (top left). Instead, click the menu button (top right).
Then, click on the menu entry "trial & download".
Next, click the big green download button (for the installer for the newest launcher), or click on the "alternative download" link and on that page click the download link for your OS (to get an installerless launcher, including the availability of a slightly older launcher for Windows).
After that, just run the installer, or the launcher (if you are using an installerless launcher).
Now you will need to login to the launcher with the email and password for your free Mojang account.
The launcher gives you access to all versions, even without a paid account. The only difference between logging in with a paid account and a free account, is that with the free account that when you play with a free account you will end up playing Minecraft in Demo mode (for all versions of MC that have a demo mode). Note that some of the older versions do not have a demo mode. For these versions, playing with a paid account gives you no additional features in the game beyond the features already present with the free account (so you can think of these as free versions of Minecraft). According to the Minecraft wiki, all versions before 1.3.1 (that is the Release version 1.3.1, not Alpha or Beta 1.3.1) did not have Demo mode.
So for example, if you select version 1.2.5 (the latest version available in the launcher prior to 1.3.1) you will get to play the game completely free, including creative mode, and no time limit. Of course, you won't get the the latest features and block types, etc. Also if you turn on "Open to LAN" and enable cheats, you can then just use "/gamemode creative" to switch into creative mode, even though you are playing the Demo version of the game.
One thing to note is that demo mode is activated by passing in "-demo" as a command-line argument when launching the game so you should be able to make the game think you are playing demo mode by adding it to the JVM arguments (possibly as "-Ddemo", or "--demo"); older versions do not recognize this JVM argument (in newer versions demo mode is the exact same game but with an internal flag set while older versions had an entirely separate demo version).