One of the more time consuming and complex steps in developing a CMS is making sure that it's generic enough to allow anyone to use it with any type of website. Scratch that constraint off your list right now. You're going to build this thing for yourself and no one else.
Now just because you're only coding this for yourself, it doesn't mean you shouldn't write re-usable code. Building things properly will make any maintenance or updates easier on you. When I say forget about making your CMS generic, I mean you can create a CMS that's only good for an article based website but won't work for a sales site for example. But your basic building blocks should still follow good programming practices and strive to be nice and generic at the code level.
The next major component you can remove from your custom content management system is a WYSIWYG editor. If you have enough programming knowledge to code your own CMS, it's fair to assume that you don't need a WYSIWYG editor to create your web pages. All you need is a big text box to type in all of the core content for a page, HTML tags included. Is this starting to sound a bit more like a manageable project?
By removing these two constraints building your own CMS becomes a workable project that can be completed over a weekend. There are other features that you can strip out if you want to reduce the scope of the project further, but that will depend on your application. For example, if your website doesn't use many images, you may choose to forego any image uploading features altogether. On the other hand, if your website is a sales site with lots of product shots, you may want to spend lots of effort on image features and scale back on features that you may not use as often.
Having choice is the wonderful thing about writing your own content management system. The scope of your project can be as broad or as narrow as you need.