It's probably been requested before and faded into obscurity, but whatever. I'm going to start with stuff that's absolutely necessary for the mod, then stuff that would make it awesome.
Firstly, a currency system. Something like Millenaire's money system (three tiers of money, 64 bronze coins= 1 Silver, 64 Silvers = 1 Gold) would probably be best.
A staff, or something, that when you right click on a block, spawns an NPC merchant. They don't move or talk or anything, they just stand there. When you right click on them, it opens a GUI, that contains everything they buy and sell. For this basic form, there's only one type, and he can buy/sell a maximum of 28 different items (a full inventory). The composition of this list, and the price of the items, can be adjusted via a .txt file. The Merchant has unlimited stock of all items, so if you have the money you can buy whatever you need. Basically, just have an NPC that you can sell to and buy from. Very barebones, and probably not super difficult.
The Optional/Awesome stuff
This stuff is, as far as I know, more advanced, but worth it in my opinion. Here we go: multiple, adjustable types of merchants. Another .txt file has all the types of merchants on different lines.
The merchant name is displayed over their head. 1(2b) means Block id 1, smoothstone, is bought and sold for 2 bronze coins. Silver coins are s, gold is g. Total number of items in the merchant's buy/sell list can still be limited, as it won't make a difference with the multiple types. I'm not sure if this is possible, but having the ability to change the merchant skin, which can be added to the mobs folder, would be great.
To change the merchant's type, right click him with the merchant-summoning staff.
Well, there you have it. I personally think this would be awesome for SMP, but all I'm concerned with for now is SSP. The key element of this is that the merchants are placeable and immobile. I feel that this would add some life to player made cities and buildings. And yes, I know you could just put the buy/sell value to zero and get stuff for free, but if you're going to cheat, just use TMI. It's simpler.