At the time of writing this article, Joomla version 3.1.5 is the current, stable version of the worlds most versatile CMS system. Joomla 2.5 will be supported well into next year (2014) and therefor there is no reason for panic if you are using Joomla 2.5. However, a lot of websites are still running Joomla 1.5, which has gone out of support (a long time ago). In many cases the reluctance to upgrade websites is due to the fact that the actual owners of the websites either don't consider themselves technically apt enough to perform the upgrade, or that they have tried, and failed.
Currently there are two main, free of charge, routes to upgrade Joomla, JUpgrade and J2xml. Both of these have their pros and cons.
JUpgrade is a clever add-on that automatically downloads a new version of Joomla and installs it in a sub-folder of your website, allowing you to upgrade the website with minimal hassle. It uses the same database as your old website so you don't even need to create a new database for your new site. The biggest drawback with using JUpgrade when upgrading all the way from Joomla 1.5 to Joomla 3.1 is, that it doesn't work. JUpgrade has two versions. The 'good old' JUpgrade that will upgrade your Joomla 1.5 website to Joomla 2.5, and the JUpgrade PRO version which is meant to upgrade your website from Joomla 2.5 to Joomla 3.1. This means that you will always have to upgrade twice, and in addition, JUpgrade PRO will not upgrade in the same manner as the 'good old' JUpgrade, i.e. to download and install a new site in a sub-folder of the old site.
I have previously written articles on upgrading websites from Joomla 1.5 to Joomla 2.5 using JUpgrade (For example at http://www.linkedin.com/groups/Hi-guys-I-know-that-80142.S.233039361?qid=0db66396-53e0-4e71-bc71-fe02ac6fc84a&trk=groups_search_item_list-0-b-ttl), which I find is one of the most useful tools out there for Joomla, particularly due to the fact that it transfers all of your articles, menus, web-links, and whatever else you would want to use on your new website. However I would always advise for you to skip upgrading third party extensions, and just download and install new versions of the extensions for your system, if available.
For some strange reason the original JUpgrade tool has not been maintained to allow direct upgrade from Joomla 1.5 to Joomla 3, so the process using JUpgrade and JUpgrade PRO to upgrade your Joomla 1.5 website to Joomla 3 currently is as follows:
1 - Download JUpgrade
2 - Install JUpgrade on your Joomla 1.5 website
3 - Adjust the JUpgrade component settings according to your upgrade plan
4 - Run JUpgrade
5 - Once JUpgrade has finished the upgrade, use FTP (or SCP or any other method you have access to, unless you have administrative access to the web-server, then doing this in shell is actually quite easy) to create a new folder in the folder above your website root folder (lets just call the folder 'j15'), move your current website installation to that folder and then move all the Joomla 2.5 files from your 'j15/jupgrade' folder, back to your website root folder.
6 - Log on to your website administration panel and click the 'Update' button, because JUpgrade will not download the current version of Joomla 2.5 during the upgrade (i.e. 2.5.14), but will use version 2.5.6 instead. This is , I assume, due to the fact that the creators of JUpgrade got tired of the constant database-related changes that have occurred during the development of Joomla 2.5, rendering their component useless every time a new version of Joomla was published, from version 2.5.6 up to the current version of 2.5.14(an issue that I actually point out in my article on Linked-in referenced above). However, due to the one-click update feature in Joomla 2.5, this is not really an issue.
7 - Here's where things turn interesting. Now you need to create a new Joomla 3.1 website (remember, earlier I stated that JUpgrade PRO will not work in the same manner as the 'good old' JUpgrade).
8 - Download JUpgrade PRO and install it on your new Joomla 3.1 website (note that the upgrade MUST happen on an 'empty' Joomla 3.1 installation)
9 - If you do have direct access to the database of your Joomla 2.5 installation, you can use the 'Database' based upgrade, however I prefer not to do that unless both the websites are on the same server. If not you need to go with the 'Restful' upgrade. In that case you need to install JUpgrade PRO module on the Joomla 2.5 installation and create a key-code (just any code to your liking) and register it on both sites.
10 - From your Joomla 3.1 site, click the 'Upgrade' button in the JUpgrade PRO component.
Now I have never (and I have tried this several times) gotten the last step to work properly. I have tried both the 'Database' and the 'Restful' methods, and both of them always end up the same way. JUpgrade PRO goes into 'Upgrading undefined' and hangs there. This is the same problem we worked so hard to circumvent in the 'good old' JUpgrade component on Joomla 1.5 (as I point out in my article on Linked-in, referenced earlier). I assume that this is due to changes and development in the Joomla 3.1 database system.
The other upgrade tool I mentioned earlier, J2xml, is also a little handicapped when it comes to upgrading from Joomla 1.5 to Joomla 3.1. J2xml will allow us to export only the basic information you will need on your new website. That is articles, users, article categories, web-links etc. It will not however allow you to export your menu structure, which is quite a drawback when you have a large website you need to upgrade. In addition, J2xml will not allow you to transfer your information directly from a Joomla 1.5 website to a Joomla 3.1 website. So the upgrade procedure using J2xml is currently as follows.
1 - Download J2xml
2 - Install J2xml on your Joomla 1.5 website
3 - Activate the J2xml plugins in your plugin manager
4 - In your 'Article Manager' select your articles and use the new J2xml 'Export' button to export the selected articles (I would advise you to do this for one article category at a time, due to the fact that J2xml will suffer from time out errors during the export procedure if too many articles are being exported at the same time)
5 - Now here is the kicker. You need to create a new Joomla 2.5 website and install J2xml there to import the data you have exported from your Joomla 1.5 website. Then you need to export the data again using the same procedure as you used on your Joomla 1.5 website, create a new Joomla 3.1 website, install J2xml there and import one more time. The upside is that the article export also exports your article categories and the users that created the articles being exported so you have that information available on your new Joomla 3.1 website. Another upside is that you do not need to create a new website with a new database for each version of Joomla. Once you have exported the data it's available in XML files on your own computer so you can, in fact, delete your Joomla 1.5 website from your server and install Joomla 2.5 onto that server, use the J2xml importer to import the data, use J2xml to export it again, and then, once you have exported the data from your Joomla 2.5 website you can delete that and install Joomla 3.1. and import the data into that site using the J2xml importer.
Both of these methods are time consuming and frankly way too much hassle and to many break-points involved.
My advice is to use a mixture of the two. Use the 'good old' JUpgrade method to upgrade your Joomla 1.5 website to Joomla 2.5 and then use J2xml to export the data from your Joomla 2.5 website, create your new Joomla 3.1 website and import the data onto that. This has the least hassle involved and the highest rate of success in my experience.
Being a Joomla developer and long-time user, I have never really understood why an 'upgrade' feature isn't a part of Joomla itself. It seems quite obvious that if you have a website, and intend to carry on having a website, you will need to upgrade it at one time or another. However, for the time being we will have to use the methods available to us, even if they seem unnecessarily complex.