There is no simple step-by-step solution to this, but I can give you some ideas about where to start. There are a few options you can look in to.
The first option is to make use of modeling software which provides
voxel sculpting. This means that the software uses a voxel representation internally, and so it should be easy to get it to save that voxel representation to disk. Of course, you'll have to be familiar with the file format of the program you are using, or otherwise write an export script into your own file format.
I think that one of the most well known examples of this kind of software is
3D-Coat, though I haven't used it myself. Another (cheaper) example if is
Acropora and I have used the free version of this. I was also able to read the Acropora file format though I forget the details now. Lastly, it seems there has been some interest in
adding this to Blender but I don't know if that project actually went anywhere.
The second option is to use regular modeling software (Blender, 3DS Max, etc) to model you object or terrain and then convert that polygon model into voxels. This is known as 'voxelization' so try searching for that term. It should be possible to do this for smooth voxels as well as cubic ones though it will be a little more complex.
When performing voxelization you will tend to end up with hollow objuects, so be aware you will need some way to fill them. Also be aware that converting UV textures to per-voxel materials will need some careful thought.
A third option is procedural content generation. This is very popular with voxel worlds because it lets you create huge (even infinite) environments with relatively little work. I'm sure that if you search around you'll find some good information but let me know if you need some pointers.
The last option is to write your own editing/modeling software as part of your game. This is kind of reinventing the wheel, but one of the advantages of voxel terrain is that they can be very dynamic and so many games allow editing as a gameplay mechaninc.